home *** CD-ROM | disk | FTP | other *** search
/ BBS Toolkit / BBS Toolkit.iso / programs / se401a.zip / SE400.DOC < prev    next >
Text File  |  1992-05-12  |  1MB  |  28,878 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.                                OSIRIS SE Rev 4.01
  23.  
  24.                         Copyright (c) 1988, 89, 90, 91, 92
  25.                                         By
  26.                           International TeleCommunications
  27.                                 ALL RIGHTS RESERVED
  28.  
  29.  
  30.                                 1 314 334-6359 CBIS
  31.                                 1 314 335-5384 VOICE
  32.  
  33.                                DOCUMENT VERSION 15.00
  34.                                    May 12, 1992
  35.                           Table of Contents
  36.                                  i
  37.  
  38. Warranty .................................................. Page   1
  39. Copyright ................................................. Page   1
  40. Hardware Requirements ..................................... Page   2
  41. Archive Contents, Exe's ................................... Page   2
  42.    Zmodem.exe ............................................. Page   3
  43.    Ymodem.exe ............................................. Page   3
  44.    Xmodem.exe ............................................. Page   3
  45.    Chksum.exe ............................................. Page   3
  46.    Index.exe .............................................. Page   3
  47.    Mmu.exe ................................................ Page   3
  48.    Ovl01818.exe ........................................... Page   3
  49.    Bullgen.exe ............................................ Page   3
  50.    Confile.exe ............................................ Page   3
  51.    Fam.exe ................................................ Page   3
  52.    Cat.exe ................................................ Page   3
  53.    Sphinx.exe ............................................. Page   3
  54.    Ulink.exe .............................................. Page   3
  55.    Osm.exe ................................................ Page   3
  56.    Osiris.exe ............................................. Page   3
  57.    Imx.exe ................................................ Page   3
  58.    Readarc.exe ............................................ Page   3
  59.    Export.exe ............................................. Page   4
  60.    Import.exe ............................................. Page   4
  61.    Traffic.exe ............................................ Page   4
  62.    Event.exe .............................................. Page   4
  63.    Scan.exe ............................................... Page   4
  64.    Osetup.exe ............................................. Page   4
  65.    User.exe ............................................... Page   4
  66.    Ovl01819.exe ........................................... Page   4
  67.    Mkpost.exe ............................................. Page   4
  68.    Itc.exe ................................................ Page   4
  69.    Itlink.exe ............................................. Page   4
  70.    Memo.exe ............................................... Page   4
  71.    Cmds.dat ............................................... Page   4
  72.    Ascii.txt .............................................. Page   4
  73.    Cmdmake.exe ............................................ Page   4
  74.    Lankey.exe ............................................. Page   4
  75.    Setlock.exe ............................................ Page   4
  76. Test-Drive Mode ........................................... Page   4
  77. Introduction .............................................. Page   5
  78.    Not Just A Bbs Program ................................. Page   5
  79.    Cost ................................................... Page   5
  80. Set Up .................................................... Page   6
  81.    Important Information .................................. Page   6
  82. Local Testing ............................................. Page   7
  83.    Reboot First ........................................... Page   7
  84. On-Line Testing ........................................... Page   7
  85. Menus ..................................................... Page   7
  86.    Beginners Menus ........................................ Page   7
  87.    Slightly Advanced Menus ................................ Page   9
  88.  
  89.  
  90.                           Table of Contents
  91.                                  ii
  92.  
  93. Odds And Ends ............................................. Page  10
  94.    Environment Variable ................................... Page  10
  95.    Spl/I .................................................. Page  10
  96. Main Menu ................................................. Page  10
  97.    Conference Area ........................................ Page  11
  98.    File Area .............................................. Page  11
  99.    Log Off ................................................ Page  11
  100.    User Status ............................................ Page  12
  101.    Bulletin ............................................... Page  12
  102.    Page You ............................................... Page  12
  103.    Change Set-Up .......................................... Page  13
  104.    Version ................................................ Page  13
  105.    Who Is On-Line ......................................... Page  14
  106.    Message Center ......................................... Page  14
  107.       [I]ndividual ........................................ Page  15
  108.       [T]hread ............................................ Page  15
  109.       File Attaches ....................................... Page  15
  110.    Download ............................................... Page  16
  111.    User List .............................................. Page  16
  112.    Store .................................................. Page  16
  113.    Statistics Subsystem ................................... Page  17
  114.       Todays Callers ...................................... Page  17
  115.       Who Called Yesterday ................................ Page  17
  116.       Caller History ...................................... Page  17
  117.       Six Best Times To Call .............................. Page  17
  118.       Six Worse Times To Call ............................. Page  18
  119.          Quirk ............................................ Page  18
  120.       Top Ten Uploaders ................................... Page  18
  121.       Baud Rate Chart ..................................... Page  18
  122.       Top Ten Downloads ................................... Page  18
  123.       Protocol Graph ...................................... Page  18
  124.       Top Ten Dnloaders ................................... Page  18
  125.       Track Call History .................................. Page  19
  126.       Specific History Date ............................... Page  20
  127.       Track Individual .................................... Page  20
  128.       Total And Avg In-Use ................................ Page  20
  129.       Top Ten Callers To The System ....................... Page  20
  130.       Top Ten Message Posters ............................. Page  21
  131.       File Area Statistics ................................ Page  21
  132.       Advanced Mailer/Remote Tnt .......................... Page  21
  133.    Inter Node Mail Room ................................... Page  21
  134.    User Defined Functions ................................. Page  22
  135. Adding Conference Message Areas ........................... Page  23
  136.    Area Name .............................................. Page  23
  137.       Fragmented Area Numbers ............................. Page  23
  138.    Area Access Level ...................................... Page  23
  139.    Area Flag Settings ..................................... Page  23
  140.       Flags, How They Work ................................ Page  24
  141.          General Propose Flags ............................ Page  24
  142.          Area Flags ....................................... Page  24
  143.  
  144.  
  145.                           Table of Contents
  146.                                  iii
  147.  
  148.    Board Type ............................................. Page  25
  149.       Local ............................................... Page  25
  150.       Echo ................................................ Page  25
  151.       Echo/Pass ........................................... Page  25
  152.    Message Type ........................................... Page  25
  153.       Asp ................................................. Page  25
  154.       Asp/Alias ........................................... Page  25
  155.       Rev ................................................. Page  26
  156.          Mod.ctl .......................................... Page  26
  157.       Rev/Alias ........................................... Page  26
  158.    Origin Line ............................................ Page  26
  159.    Full Help Menu Name .................................... Page  26
  160.    Pack Trigger Level ..................................... Page  27
  161.    Pack Level ............................................. Page  27
  162.    Word Wrap .............................................. Page  27
  163.    Functions .............................................. Page  27
  164.       Area Change ......................................... Page  27
  165.       Log Off ............................................. Page  28
  166.       New Mail ............................................ Page  28
  167.       Enter ............................................... Page  28
  168.       Main ................................................ Page  28
  169.       Confer. ............................................. Page  29
  170.       Text ................................................ Page  29
  171.       Gateway ............................................. Page  29
  172.       Pack ................................................ Page  29
  173.          Bug? . . . No .................................... Page  30
  174.       File Areas .......................................... Page  30
  175.       Message Center ...................................... Page  30
  176.       [R]ead Command ...................................... Page  30
  177.          [M]ask ........................................... Page  31
  178.          [T]o ............................................. Page  31
  179.          [F]rom ........................................... Page  32
  180.          [A]ll ............................................ Page  32
  181.          [P]attern ........................................ Page  32
  182.          [L]ast Read ...................................... Page  33
  183.          Searching For Specific Messages .................. Page  33
  184.          [T]hread ......................................... Page  33
  185.    Default.msg ............................................ Page  34
  186.    Final Step ............................................. Page  34
  187. Matrix(?) ................................................. Page  35
  188. Osage ..................................................... Page  35
  189. Ascii Uploading Into Messages ............................. Page  36
  190.    Rules .................................................. Page  36
  191.    Hard Carriage Returns .................................. Page  36
  192. Line Editor ............................................... Page  38
  193. Message Handling Or Message Base Format ................... Page  38
  194.    Fido  Style ............................................ Page  38
  195.    Hudson ................................................. Page  38
  196.    The Answer ............................................. Page  39
  197.  
  198.  
  199.  
  200.                           Table of Contents
  201.                                  iv
  202.  
  203. Fidonet Style Echomail .................................... Page  39
  204.    Export ................................................. Page  40
  205.       Command Line ........................................ Page  40
  206.          /S ............................................... Page  40
  207.          /R ............................................... Page  40
  208.          /N ............................................... Page  40
  209.          /F ............................................... Page  40
  210.          /M ............................................... Page  40
  211.          /A ............................................... Page  40
  212.          /X ............................................... Page  40
  213.          /O ............................................... Page  40
  214.          /C ............................................... Page  41
  215.          /? ............................................... Page  41
  216.    Setting Up Export.ctl For Outbound Echomail ............ Page  41
  217.       Support Path ........................................ Page  41
  218.       Add Listing ......................................... Page  41
  219.       Enter Area Name ..................................... Page  42
  220.       Determine Archiving Method .......................... Page  42
  221.       Get Network Address ................................. Page  43
  222.       Determine Priority .................................. Page  43
  223.       Avoiding Echomail Errors ............................ Page  44
  224.       Config.sys .......................................... Page  45
  225.       Import.log .......................................... Page  46
  226.       Exporting And Multiple Line Systems ................. Page  46
  227.    Import ................................................. Page  47
  228.       Dups ................................................ Page  48
  229.          Backup System .................................... Page  48
  230.       Import's Echo.ctl File .............................. Page  48
  231.       Sample Echo.ctl ..................................... Page  49
  232.       Common Error ........................................ Page  49
  233.       Import Em Cache ..................................... Page  50
  234.          Cache Statistics ................................. Page  50
  235.    Disk Space ............................................. Page  50
  236.    Speed Tips ............................................. Page  51
  237.    Halcyon.cfg ............................................ Page  51
  238.       Use Ems ............................................. Page  52
  239.       Bypass Security ..................................... Page  52
  240.       Max Cache Size ...................................... Page  53
  241.          Ems Handles, Very Important ...................... Page  53
  242.       No Em Cache ......................................... Page  53
  243.       Maximum Memory ...................................... Page  53
  244.       Matrix Address ...................................... Page  53
  245.          Common Mistake ................................... Page  54
  246.       Tear Line ........................................... Page  54
  247.       Point Net ........................................... Page  54
  248.       Htms Address ........................................ Page  54
  249.       Archive Directory ................................... Page  54
  250.       Msg Format .......................................... Page  54
  251.       Outbound Msg Directory .............................. Page  55
  252.       Inbound File Path ................................... Page  55
  253.  
  254.  
  255.                           Table of Contents
  256.                                  v
  257.  
  258.       Pkt Temp Storage .................................... Page  55
  259.       Dup.dat Storage ..................................... Page  55
  260.       Max Systems ......................................... Page  55
  261.       Unknown Save Area ................................... Page  56
  262.          Matrix Ending Up Here ............................ Page  56
  263.       Formatting .......................................... Page  57
  264.    Echo/Pass .............................................. Page  57
  265.    Seen By Lines .......................................... Page  57
  266.    Quad Already Seen System ............................... Page  57
  267.    Origin Lines ........................................... Page  57
  268.    Databases .............................................. Page  58
  269.    Error Reading/Writing Record 0 ......................... Page  58
  270.    Traffic.exe ............................................ Page  58
  271.    Readarc.exe ............................................ Page  58
  272.    Ulink .................................................. Page  59
  273. Sphinx! ................................................... Page  59
  274.    Display.dat ............................................ Page  60
  275.    Message Center ......................................... Page  63
  276.       Print Current Message To A Text File ................ Page  63
  277.       Print Current Message To Printer .................... Page  63
  278.       Conference Message Areas ............................ Page  63
  279.       List Headers ........................................ Page  64
  280.       Mark ................................................ Page  65
  281.       Restore ............................................. Page  65
  282.       Search .............................................. Page  65
  283.       Broadcast ........................................... Page  66
  284.       Edit Current ........................................ Page  67
  285.       Jumping To A Specific Message ....................... Page  67
  286.       Set Personal Msg Pointers ........................... Page  67
  287.    Conference Message Areas ............................... Page  68
  288.       Moderator ........................................... Page  68
  289.       Mass Print .......................................... Page  68
  290.       Change Area ......................................... Page  69
  291.       Mark ................................................ Page  69
  292.       Restore ............................................. Page  69
  293.       Search .............................................. Page  69
  294.       Forward Conference .................................. Page  70
  295.       Forward Message Center .............................. Page  70
  296.       Jumping To A Specific Message ....................... Page  70
  297.       Marking Received .................................... Page  71
  298.       Set Personal Msg Pointers ........................... Page  71
  299.       Set Unread Msg Pointers ............................. Page  71
  300.       Tag Line ............................................ Page  71
  301.       Screen Clip ......................................... Page  72
  302.    Dc Word(tm) ............................................ Page  73
  303.       Commands ............................................ Page  73
  304.       F1 - Calculator ..................................... Page  76
  305.       F2 - Text Viewer .................................... Page  76
  306.       Alt-D Dictionary .................................... Page  76
  307.       Alt-J Jump To Dos ................................... Page  76
  308.  
  309.  
  310.                           Table of Contents
  311.                                  vi
  312.  
  313.       Ctrl-B Reformat ..................................... Page  77
  314.       Alt-I Import File ................................... Page  77
  315.       Alt-S, Cursive Signature ............................ Page  77
  316.       Mouse Menu .......................................... Page  78
  317.       Cut/Paste ........................................... Page  78
  318.       Cut ................................................. Page  78
  319.       Paste ............................................... Page  79
  320.       Quick Jump .......................................... Page  79
  321.       Macro Keys .......................................... Page  79
  322.    Color .................................................. Page  81
  323. File Subsystem ............................................ Page  82
  324.    Upload/Download File(s) ................................ Page  82
  325.       Files.idx ........................................... Page  82
  326.       Files.dat ........................................... Page  82
  327.       Dl_area.idx ......................................... Page  82
  328.    Wildcard Characters .................................... Page  83
  329.    Advantages ............................................. Page  83
  330.    Disadvantage ........................................... Page  83
  331.    File Queue ............................................. Page  83
  332. Defining A File Area ...................................... Page  83
  333.    Area Name .............................................. Page  84
  334.    Access Level ........................................... Page  84
  335.    Area Access Flags ...................................... Page  84
  336.    Download Path .......................................... Page  84
  337.    Download Files.qbs ..................................... Page  84
  338.       Cd-Rom Or Worm Drives ............................... Page  85
  339.       File Not Found, But It Exists! ...................... Page  85
  340.    Upload Path ............................................ Page  85
  341.    The Help Menu .......................................... Page  85
  342.    Dnl Files Name ......................................... Page  86
  343.    Upl Files Name ......................................... Page  86
  344.    Free Download Area ..................................... Page  86
  345.    Application Flags ...................................... Page  86
  346.    Command Key Options .................................... Page  87
  347.       Area Change ......................................... Page  87
  348.          Alternate Area Listing ........................... Page  87
  349.       Log Off ............................................. Page  88
  350.       File Search ......................................... Page  88
  351.       Kill ................................................ Page  88
  352.       Main Menu ........................................... Page  88
  353.       Quick File List ..................................... Page  88
  354.       Full File List ...................................... Page  89
  355.          List In Reverse Order ............................ Page  89
  356.          List Mask ........................................ Page  89
  357.       Upload .............................................. Page  90
  358.          File Duplication System .......................... Page  91
  359.          Badfiles.bbs ..................................... Page  91
  360.       (G)oodbye After Batch, (A)bort, Or (S)tart Transfer . Page  92
  361.          Archive Integrity Check .......................... Page  92
  362.          Virus Check ...................................... Page  92
  363.  
  364.  
  365.                           Table of Contents
  366.                                  vii
  367.  
  368.       Download ............................................ Page  93
  369.          File Ratio Limits ................................ Page  93
  370.          Kilo-Byte Ratio Limits ........................... Page  93
  371.          Password Protected Downloads ..................... Page  94
  372.          Password Kill After Downloading .................. Page  94
  373.          Bi-Directional Upload ............................ Page  94
  374.       File Queue .......................................... Page  94
  375.          Download ......................................... Page  95
  376.          List Selected Files .............................. Page  95
  377.          Remove ........................................... Page  95
  378.          Estimated Transfer Time .......................... Page  95
  379.       Trans Stats ......................................... Page  95
  380.       Messages ............................................ Page  95
  381.       Type ................................................ Page  95
  382.       Protocol ............................................ Page  95
  383.       Extract ............................................. Page  96
  384.          Restrictions ..................................... Page  96
  385.          Auto-Cleanup ..................................... Page  96
  386.          Rearchive ........................................ Page  96
  387.       Contents ............................................ Page  96
  388.          Achiever Notes ................................... Page  97
  389.       New Files ........................................... Page  97
  390.       Conference .......................................... Page  97
  391.       Gate_fr ............................................. Page  97
  392.       File One ............................................ Page  98
  393.    Dl Time ................................................ Page  98
  394.       Error Messages ...................................... Page  98
  395.    File Transfer Protocols ................................ Page  98
  396.       Internal ............................................ Page  98
  397.       External ............................................ Page  99
  398.    How It All Works ....................................... Page 101
  399.    Protocol.cfg Fields .................................... Page 101
  400.       Name ................................................ Page 101
  401.       Program ............................................. Page 101
  402.       Send File(s) ........................................ Page 101
  403.       Receive File(s) ..................................... Page 101
  404.       Slow Speed Cps And High Speed Cps ................... Page 102
  405.       Batch Protocol ...................................... Page 102
  406.       Access Level ........................................ Page 102
  407.          New Callers ...................................... Page 102
  408.    Embedded Protocol Characters ........................... Page 103
  409.    Bi-Directional Protocols ............................... Page 104
  410.       Restrictions ........................................ Page 105
  411. Validation And Virus Checking ............................. Page 106
  412. Files.qbs ................................................. Page 106
  413.    Confiles ............................................... Page 107
  414.    Fam: File Area Manager ................................. Page 107
  415.       Screen Layout ....................................... Page 108
  416.       Using Fam ........................................... Page 108
  417.       Move ................................................ Page 108
  418.  
  419.  
  420.                           Table of Contents
  421.                                 iix
  422.  
  423.       Kill ................................................ Page 109
  424.       Change Areas ........................................ Page 109
  425.       Upload .............................................. Page 109
  426.       Dnload .............................................. Page 109
  427.       Edit ................................................ Page 109
  428.       Info ................................................ Page 110
  429.       Orphans ............................................. Page 110
  430.       Arcview ............................................. Page 110
  431.       Arcformat ........................................... Page 110
  432.       Arcaddcomment ....................................... Page 111
  433.       Shell ............................................... Page 111
  434.       Rename .............................................. Page 111
  435.       Untag All ........................................... Page 111
  436.       Transpose ........................................... Page 112
  437. System Bulletins .......................................... Page 112
  438.    Xxxxx.msg .............................................. Page 112
  439.       Warning ............................................. Page 112
  440.    Accxxxx.bbs ............................................ Page 113
  441.    Smart(tm) Bulletins .................................... Page 113
  442. Getting On-Line ........................................... Page 113
  443.    Required Command Line Parameters ....................... Page 114
  444.       Confusing Rains ..................................... Page 114
  445.    Optional Settings ...................................... Page 114
  446.       -T, Time Till Next Event ............................ Page 114
  447.       -M, Memory File ..................................... Page 115
  448.       -L, Local Mode ...................................... Page 115
  449.       -K, No Multi-Tasker ................................. Page 115
  450.       -Hxxx ............................................... Page 115
  451.       -Cx ................................................. Page 115
  452.       -X .................................................. Page 116
  453.       -Oxxxx .............................................. Page 116
  454.       -Sxxxx .............................................. Page 116
  455. Comport.dat ............................................... Page 117
  456. Nodexx.ini ................................................ Page 117
  457. Osm ....................................................... Page 122
  458.    Overview ............................................... Page 122
  459.    Main Display ........................................... Page 122
  460.    File ................................................... Page 123
  461.    Msg .................................................... Page 123
  462.    Access ................................................. Page 123
  463.    Sysinfo ................................................ Page 123
  464.    Main ................................................... Page 123
  465.    Jump ................................................... Page 123
  466.    Clone .................................................. Page 124
  467.    Mass ................................................... Page 124
  468.    Delete ................................................. Page 124
  469.    Verify ................................................. Page 125
  470.    Dialog Confirmation Box's .............................. Page 125
  471.  
  472.  
  473.  
  474.  
  475.                           Table of Contents
  476.                                  ix
  477.  
  478.    Edit Mode .............................................. Page 126
  479.       Editing Individual Fields ........................... Page 126
  480.          Backspace ........................................ Page 126
  481.          Ctrl-Currt ....................................... Page 126
  482.          Curlf ............................................ Page 126
  483.          Currt ............................................ Page 126
  484.          Delete ........................................... Page 126
  485.          End .............................................. Page 126
  486.          Esc .............................................. Page 126
  487.          Home ............................................. Page 126
  488.          Insert ........................................... Page 126
  489.       Screen Movement ..................................... Page 126
  490.          Up Arrow & Reverse Tab ........................... Page 126
  491.          Down Arrow, Return, Tab .......................... Page 126
  492.          Pgup & Pgdn ...................................... Page 126
  493.          Ctrl-Home & Ctrl-End ............................. Page 126
  494.          Ctrl-Return ...................................... Page 126
  495.    Flags .................................................. Page 126
  496.    Misc ................................................... Page 127
  497.       Protocol ............................................ Page 127
  498.       Sig ................................................. Page 127
  499.       Com Port Defs ....................................... Page 127
  500.       Nodexx.ini Compiler ................................. Page 127
  501.       Dbase ............................................... Page 127
  502.       Pack Db ............................................. Page 127
  503.       Make Db ............................................. Page 128
  504.       Add Db .............................................. Page 128
  505.    Mouse .................................................. Page 128
  506.       Vertical  Menus ..................................... Page 128
  507.       Editing ............................................. Page 129
  508.       Confirmation Box .................................... Page 129
  509. Cat.exe ................................................... Page 129
  510.    Cat's Report To You .................................... Page 130
  511.    Cat.cfg ................................................ Page 132
  512.    Explanation ............................................ Page 133
  513.       <Day Of Week> ....................................... Page 133
  514.       <Day Of Month> ...................................... Page 133
  515.       Delete Received ..................................... Page 133
  516.       Delete Unread ....................................... Page 134
  517.       Backup Message Center ............................... Page 134
  518.       Backup Files.dat .................................... Page 134
  519.       Backup User Records ................................. Page 134
  520.       Rebuild Files.qbs Indices ........................... Page 135
  521.       File Sort Type ...................................... Page 135
  522.       Archive Type ........................................ Page 136
  523.       Check Message Areas ................................. Page 136
  524.       History ............................................. Page 137
  525.       Delete Old Bulletins ................................ Page 137
  526.       Delete User Records ................................. Page 138
  527.       Post Conference ..................................... Page 138
  528.  
  529.  
  530.                           Table of Contents
  531.                                  x
  532.  
  533.       Post Bulletin ....................................... Page 139
  534.       Conference Stats .................................... Page 139
  535.       Delete Old Files .................................... Page 140
  536.       Make Filelist ....................................... Page 140
  537.       Run External ........................................ Page 141
  538.       Virus Check ......................................... Page 142
  539.          Disadvantages! ................................... Page 142
  540.       Cat File Integrity System ........................... Page 143
  541.          Chksum.exe ....................................... Page 144
  542.       Synchronizing Access Levels ......................... Page 145
  543.    Command Line ........................................... Page 145
  544.       Cat B ............................................... Page 145
  545.       Cat V ............................................... Page 145
  546.       Cat S ............................................... Page 145
  547.       Cat M ............................................... Page 146
  548.       Cat P ............................................... Page 146
  549.       Cat ? ............................................... Page 146
  550.       Cat F ............................................... Page 146
  551.    Mkpost.exe ............................................. Page 146
  552. User.exe .................................................. Page 146
  553.    Primary Control Boxes And Main Screen .................. Page 146
  554.    Flags .................................................. Page 147
  555.    Date ................................................... Page 147
  556.    Del .................................................... Page 147
  557.    Undel .................................................. Page 147
  558.    Find ................................................... Page 148
  559.    Print .................................................. Page 148
  560.    Pack ................................................... Page 149
  561.    Index .................................................. Page 149
  562.    Page4 .................................................. Page 149
  563.    Page2 .................................................. Page 149
  564.    Sort ................................................... Page 150
  565.    Left/Right Arrow ....................................... Page 150
  566.    First / Last ........................................... Page 150
  567.    Add .................................................... Page 150
  568.    Cdnup .................................................. Page 150
  569.       Type Of Clear ....................................... Page 150
  570.       Which Records To Clear .............................. Page 150
  571.    Page3 .................................................. Page 151
  572.    Dynamic Access Level Changing .......................... Page 151
  573.       Shift Up Range ...................................... Page 151
  574.       Shift Dn Range ...................................... Page 151
  575.       Change Specific ..................................... Page 151
  576. Access.sys ................................................ Page 152
  577.    Time  Limit  Per  Call ................................. Page 153
  578.    Time Limit Per Day ..................................... Page 153
  579.    Download Limits ........................................ Page 153
  580.    File Ratio Limits ...................................... Page 153
  581.    Byte Ratio ............................................. Page 153
  582.    Time Give Back ......................................... Page 154
  583.  
  584.  
  585.                           Table of Contents
  586.                                  xi
  587.  
  588.    Byte Give Back ......................................... Page 154
  589.    Password Protect Uploads ............................... Page 154
  590.    Allow Password/Kill .................................... Page 154
  591.    Attach File To Message ................................. Page 154
  592.       Twitting A User ..................................... Page 154
  593. Display Files ............................................. Page 155
  594.    Logo.asc/Mmu/Ans ....................................... Page 155
  595.    Nodexx.asc/Mmu/Ans ..................................... Page 155
  596.    Tlimit.asc/Mmu/Ans ..................................... Page 155
  597.    Xxxx.msg ............................................... Page 155
  598.    Accxxxx.bbs ............................................ Page 155
  599.    Rookie.asc/Mmu/Ans ..................................... Page 156
  600.    Welcome.asc/Mmu/Ans .................................... Page 156
  601.    Welcome2.asc/Mmu/Ans ................................... Page 156
  602.    Welcome3.asc/Mmu/Ans ................................... Page 156
  603.    Welcome4.asc/Mmu/Ans ................................... Page 156
  604.    Welcome5.asc/Mmu/Ans ................................... Page 156
  605.    Main.asc/Mmu/Ans ....................................... Page 156
  606.    Mainhelp.asc/Mmu/Ans ................................... Page 156
  607.    Byebye.asc/Mmu/Ans ..................................... Page 157
  608.    Byebye2.asc/Mmu/Ans .................................... Page 157
  609.    Dos.asc/Mmu/Ans ........................................ Page 157
  610.    Back.asc/Mmu/Ans ....................................... Page 157
  611.    Last_on.asc/Mmu/Ans .................................... Page 157
  612.    Main1.prg .............................................. Page 157
  613.    Main2.prg .............................................. Page 157
  614.    Main3.prg .............................................. Page 157
  615.    Main4.prg .............................................. Page 157
  616.    Main5.prg .............................................. Page 158
  617.    Main6.prg .............................................. Page 158
  618.    Main7.prg .............................................. Page 158
  619.    Main8.prg .............................................. Page 158
  620.    Main9.prg .............................................. Page 158
  621.    Main10.prg ............................................. Page 158
  622.    Msghelp.asc/Mmu/Ans .................................... Page 158
  623.    Gate_m.asc/Mmu/Ans ..................................... Page 158
  624.    Editor.asc/Mmu/Ans ..................................... Page 159
  625.    Peditor.asc/Mmu/Ans .................................... Page 159
  626.    Edhelp.asc/Mmu/Ans ..................................... Page 159
  627.    Mchelp.asc/Mmu/Ans ..................................... Page 159
  628.    Maskhelp.asc/Mmu/Ans ................................... Page 159
  629.    Setboard.asc/Mmu/Ans ................................... Page 159
  630.    Confhelp.asc/Mmu/Ans ................................... Page 159
  631.    Filehelp.asc/Mmu/Ans ................................... Page 159
  632.    Gate_f.asc/Mmu/Ans ..................................... Page 160
  633.    File1.asc/Mmu/Ans ...................................... Page 160
  634.    Search.asc/Mmu/Ans ..................................... Page 160
  635.    Ratio.asc/Mmu/Ans ...................................... Page 160
  636.    Byte.asc/Mmu/Ans ....................................... Page 160
  637.    Mhelp.asc/Mmu/Ans ...................................... Page 160
  638.  
  639.  
  640.                           Table of Contents
  641.                                  xii
  642.  
  643.    Cselect.asc/Mmu/Ans .................................... Page 160
  644.    Slhelp.asc/Mmu/Ans ..................................... Page 160
  645.    Showibm.asc/Mmu/Ans .................................... Page 161
  646.    Showansi.asc/Mmu/Ans ................................... Page 161
  647.    No_ansi.asc/Mmu/Ans .................................... Page 161
  648.    Mcmenu.asc/Mmu/Ans ..................................... Page 161
  649.    Read.asc/Mmu/Ans ....................................... Page 161
  650.    Chelp.asc/Mmu/Ans ...................................... Page 161
  651.    Phone.asc/Mmu/Ans ...................................... Page 161
  652.    Onewhelp.asc/Mmu/Ans ................................... Page 161
  653.    Uphelp.asc/Mmu/Ans ..................................... Page 161
  654.    Dnhelp.asc/Mmu/Ans ..................................... Page 162
  655.    H_chelp.asc/Mmu/Ans .................................... Page 162
  656.    Cslhelp.asc/Mmu/Ans .................................... Page 162
  657.    Email.asc/Mmu/Ans ...................................... Page 162
  658.    Twit.asc/Mmu/Ans ....................................... Page 162
  659.    Birth.asc/Mmu/Ans ...................................... Page 162
  660.    Sys_stat.asc/Mmu/Ans ................................... Page 162
  661.    Private.asc/Mmu/Ans .................................... Page 162
  662.    New1.asc/Mmu/Ans ....................................... Page 162
  663.    New2.asc/Mmu/Ans ....................................... Page 162
  664.    Fdisplay.asc/Mmu/Ans ................................... Page 163
  665.    Statmenu.asc/Mmu/Ans ................................... Page 163
  666.    Promenu.asc/Mmu/Ans .................................... Page 163
  667.    Prohelp.asc/Mmu/Ans .................................... Page 163
  668.    Sintro.asc/Mmu/Ans ..................................... Page 163
  669.    Slist.asc/Mmu/Ans ...................................... Page 163
  670.    Infxxxx.asc/Mmu/Ans .................................... Page 163
  671.    Bulxxxx.asc/Mmu/Ans .................................... Page 163
  672. Files ..................................................... Page 164
  673.    Callx.dat .............................................. Page 165
  674.    Comport.dat ............................................ Page 165
  675.    Xxxmsg.yyy ............................................. Page 165
  676.    S_node.dat ............................................. Page 165
  677.    Userx.qbs .............................................. Page 165
  678.    Msgboard.qbs ........................................... Page 165
  679.    Hdrxxx.sys ............................................. Page 165
  680.    Txtxxx.sys ............................................. Page 165
  681.    Hdp.sys ................................................ Page 166
  682.    Txtp.sys ............................................... Page 166
  683.    Msgx.doc ............................................... Page 166
  684.    Newmail.sys ............................................ Page 166
  685.    Pmail.idx .............................................. Page 166
  686.    Hdh.sys ................................................ Page 166
  687.    Txtp.sys ............................................... Page 166
  688.    User.bbs ............................................... Page 166
  689.    User.idx ............................................... Page 166
  690.    Alias.idx .............................................. Page 166
  691.    Filboard.qbs ........................................... Page 167
  692.    Files.dat .............................................. Page 167
  693.  
  694.  
  695.                           Table of Contents
  696.                                  xiii
  697.  
  698.    Files.idx .............................................. Page 167
  699.    Dl_area.idx ............................................ Page 167
  700.    Upx.bbs ................................................ Page 167
  701.    Dnx.bbs ................................................ Page 167
  702.    Ncx.bbs ................................................ Page 167
  703.    Badfiles.bbs ........................................... Page 167
  704.    Sendx.ctl .............................................. Page 168
  705.    Tranx.log .............................................. Page 168
  706.    Effx.log ............................................... Page 168
  707.    Protocol.cfg ........................................... Page 169
  708.    Default.msg ............................................ Page 169
  709.    Osiris.err ............................................. Page 169
  710.    Welcome.bbs ............................................ Page 169
  711.    Proboard.qbs ........................................... Page 169
  712.    Hpdxxxx.dat ............................................ Page 169
  713.    Tpdxxxxx.dat ........................................... Page 169
  714.    Mainpriv.qbs ........................................... Page 169
  715.    Access.sys ............................................. Page 170
  716.    Sysinfo.qbs ............................................ Page 170
  717.    Laston ................................................. Page 170
  718.    Callx.cnt .............................................. Page 170
  719.    Nodex .................................................. Page 170
  720.    Bulletin.hdr ........................................... Page 170
  721.    Bulletin.txt ........................................... Page 170
  722.    Mod.ctl ................................................ Page 170
  723.    Baud.dat ............................................... Page 171
  724.    Dorinfox.def ........................................... Page 171
  725.    Door.sys ............................................... Page 171
  726.    Sig.def ................................................ Page 171
  727.    Sigx.log ............................................... Page 171
  728.    Chat.dmp ............................................... Page 171
  729.    Tcallx.bbs ............................................. Page 171
  730.    Histx.log .............................................. Page 172
  731.    Outx.qbs ............................................... Page 172
  732.    Myyxxxx.txt ............................................ Page 172
  733.    Key.def ................................................ Page 172
  734.    Cmds.dat ............................................... Page 172
  735.    Cmds.key ............................................... Page 172
  736.    Nodex.cfg .............................................. Page 172
  737. Ansi.sys .................................................. Page 173
  738. What About Security? ...................................... Page 173
  739. Avs(tm) ................................................... Page 175
  740.    What To Do? ............................................ Page 176
  741. Memory Manager ............................................ Page 176
  742.    Vms Errors And Their Meanings .......................... Page 177
  743.       Too Many Open Files ................................. Page 177
  744.       Access  Denied ...................................... Page 177
  745.       Cannot Locate Comspec ............................... Page 177
  746.       Memory  Control  Blocks Are Damaged ................. Page 177
  747.       Not  Enough Disk Space .............................. Page 177
  748.  
  749.  
  750.                           Table of Contents
  751.                                  xiv
  752.  
  753.       Error Writing The File .............................. Page 177
  754.       Too Many File Handles ............................... Page 178
  755.       Interrupt(s) Changed During A Shell ................. Page 178
  756.       Too May Mcbs ........................................ Page 178
  757. Locked Dte ................................................ Page 178
  758. Keyboard Commands ......................................... Page 179
  759.    Confirming Sysops Intentions ........................... Page 179
  760. Node Restricter ........................................... Page 179
  761. Command Stacking .......................................... Page 180
  762.    Command Stacking Example ............................... Page 180
  763.    Special Stacking Characters ............................ Page 180
  764. Hotkeys ................................................... Page 181
  765. Birthdate ................................................. Page 181
  766. Caller's Telephone Number ................................. Page 181
  767.    Example ................................................ Page 181
  768. Screen Length ............................................. Page 182
  769. Passwords ................................................. Page 182
  770.    Changing Passwords ..................................... Page 183
  771.    Rotating Passwords ..................................... Page 183
  772. Alias ..................................................... Page 183
  773. Private Listing ........................................... Page 183
  774. Accounting System ......................................... Page 184
  775. Message Conference Check .................................. Page 184
  776. Stats Screen .............................................. Page 184
  777. Personal Mail Check, Message Center ....................... Page 184
  778. Searching For New Files ................................... Page 185
  779.    Logging The Search Date ................................ Page 185
  780. Hard Drive Maintenance .................................... Page 186
  781. Error Handling ............................................ Page 186
  782.    Sample Osiris.err ...................................... Page 186
  783.       Error L1000 ......................................... Page 186
  784.       Error L1000 ......................................... Page 186
  785.       Error L1000 ......................................... Page 186
  786.       Error F2002 ......................................... Page 186
  787.       Error L1000 ......................................... Page 186
  788.    F20xx Error Codes ...................................... Page 187
  789.       F2001 ............................................... Page 187
  790.       F2002 ............................................... Page 187
  791.       F2003 ............................................... Page 187
  792.       F2004 ............................................... Page 187
  793.       F2005 ............................................... Page 187
  794.       F2006 ............................................... Page 187
  795.       F2007 ............................................... Page 187
  796.       F2008 ............................................... Page 187
  797.       F2009 ............................................... Page 187
  798.       F2010 ............................................... Page 187
  799.       F2011 ............................................... Page 187
  800.       F2012 ............................................... Page 187
  801.       F2013 ............................................... Page 187
  802.       F2015 ............................................... Page 187
  803.       F2099 ............................................... Page 187
  804.  
  805.                           Table of Contents
  806.                                  xv
  807.  
  808. Warning Messages .......................................... Page 187
  809.    Lm1001 ................................................. Page 187
  810.    Lm1002 ................................................. Page 187
  811. Error Xxxx9000 ............................................ Page 187
  812. Ansi Esc Filter ........................................... Page 188
  813. Slash Commands ............................................ Page 188
  814.    Restrictions ........................................... Page 189
  815.    Illegal Names .......................................... Page 190
  816. Last On ................................................... Page 190
  817. Mailer Combinations ....................................... Page 191
  818. Commit Dos Function ....................................... Page 191
  819. File Handles .............................................. Page 191
  820. Color Optimizer ........................................... Page 191
  821. Osiris And Multiple Nodes ................................. Page 192
  822.    Overview ............................................... Page 192
  823.    How It Works ........................................... Page 192
  824.    Hardware/Software ...................................... Page 193
  825.       Local Area Networks ................................. Page 193
  826.       Slave Card System ................................... Page 194
  827.       Desqview ............................................ Page 194
  828.          Caution .......................................... Page 195
  829.    Novell ................................................. Page 196
  830.    Peer-To-Peer Networks .................................. Page 196
  831.       Lantastic ........................................... Page 196
  832.    Slave Cards ............................................ Page 197
  833.    Desqview ............................................... Page 197
  834.       Exception 13 Errors ................................. Page 199
  835.    Very Important Read This ............................... Page 199
  836.    Help ................................................... Page 200
  837. Games Or Doors And Other External Program ................. Page 200
  838.    Qkdoor/Doormaster Approach ............................. Page 201
  839. Games ..................................................... Page 201
  840.    Installing A Game Sub-System ........................... Page 201
  841.       Step 1, Setting The Menu ............................ Page 202
  842.       Processing The Selection ............................ Page 206
  843.       Compiling Games.scr ................................. Page 209
  844.    The Individual Game Batch Files ........................ Page 209
  845.       Scab.bat ............................................ Page 210
  846.       Fish.bat ............................................ Page 210
  847.          Qkdoor Parameters ................................ Page 210
  848.    Dorinfo1.def/Door.sys .................................. Page 211
  849.       Dorinfo1.def ........................................ Page 211
  850.       Door.sys ............................................ Page 211
  851.    Slightly Advanced Game System .......................... Page 213
  852.       Explanation ......................................... Page 214
  853.    Overlaying A Game ...................................... Page 215
  854.    Advanced Set-Up ........................................ Page 215
  855.    Advantage .............................................. Page 216
  856.    Problem Areas .......................................... Page 217
  857.    Fossil ................................................. Page 217
  858.    Door Technical Support ................................. Page 218
  859.  
  860.                           Table of Contents
  861.                                  xvi
  862.  
  863. Private Cbis Systems ...................................... Page 218
  864. Callxxx.cnt ............................................... Page 219
  865. Rcp, Remote Command Processing ............................ Page 219
  866. Message Cache ............................................. Page 219
  867. Key.def ................................................... Page 220
  868.    Line Noise ............................................. Page 220
  869. On-Line Store ............................................. Page 223
  870.    Creating Proboard.qbs .................................. Page 224
  871.       Sample .............................................. Page 225
  872.    Product Database Storage Structures .................... Page 226
  873.    Product  Definitions ................................... Page 226
  874.       Maximum Field Lengths ............................... Page 227
  875.       Description Field ................................... Page 227
  876.          Example .......................................... Page 228
  877.          Example 2 ........................................ Page 228
  878.    Error In Osm ........................................... Page 230
  879.    Search All Departments ................................. Page 230
  880. Imx ....................................................... Page 231
  881.    Optional Command Line Switches ......................... Page 231
  882.       /X .................................................. Page 231
  883.       /Mxxxxxx ............................................ Page 231
  884.          Warning .......................................... Page 231
  885.       /Dtr ................................................ Page 232
  886.       /Hot ................................................ Page 232
  887.    Sample Batch ........................................... Page 232
  888.    Shellxx.cfg ............................................ Page 232
  889.    Mdm Control File ....................................... Page 233
  890.       Modem Initialization String ......................... Page 233
  891.       Ok Return Code ...................................... Page 233
  892.    Events ................................................. Page 233
  893.       Exit Errorlevel ..................................... Page 234
  894.       Starting Time ....................................... Page 234
  895.       Ending Time ......................................... Page 234
  896.       Day Of Week ......................................... Page 234
  897.    Modems, In General ..................................... Page 236
  898. Overlays .................................................. Page 236
  899.    Lim/Extended Memory .................................... Page 236
  900.    Vms Overlays ........................................... Page 237
  901.       Lock-Ups ............................................ Page 237
  902. Speed Tips ................................................ Page 237
  903.    Lim 4.0 ................................................ Page 237
  904.    Cache .................................................. Page 238
  905.    640K Extender .......................................... Page 238
  906.    Asc/Mmu/Ans Files ...................................... Page 238
  907.    Ovl01818 And Ovl01819 .................................. Page 238
  908.    Mono-Graphics Adapter .................................. Page 238
  909.    16650 Uart ............................................. Page 238
  910.    Fast Harddrive ......................................... Page 239
  911.       Scsi ................................................ Page 239
  912.  
  913.  
  914.  
  915.                           Table of Contents
  916.                                  xvii
  917.  
  918.    Tsr/Device Drivers ..................................... Page 239
  919.    Small Partitions ....................................... Page 239
  920.    Memory Manager ......................................... Page 239
  921.       Qemm ................................................ Page 239
  922.          Steath ........................................... Page 240
  923.       386Max .............................................. Page 240
  924.    Loadhi ................................................. Page 240
  925. 21St Century Bbsing ....................................... Page 241
  926. Overlay Caching ........................................... Page 242
  927. Price ..................................................... Page 242
  928. Upgrading ................................................. Page 243
  929.    Upgrading To Newer Versions ............................ Page 243
  930.    Important Information .................................. Page 243
  931.    Upgrading To Multiple Lines Or Adding More Lines ....... Page 243
  932. Lost Or Damaged Keys ...................................... Page 243
  933. Bug Reports ............................................... Page 244
  934. Suggestions ............................................... Page 244
  935. Help ...................................................... Page 244
  936.    Busy ................................................... Page 244
  937.    Exceptional Important, Must Read! ...................... Page 245
  938. Spl/I ..................................................... Page 246
  939.    Spl/I Verses Itp ....................................... Page 246
  940.       Don't Be Overwhelmed ................................ Page 247
  941.    Introduction ........................................... Page 247
  942.    Data: Variables And Constants .......................... Page 247
  943.    Data Classes ........................................... Page 248
  944.       Integer ............................................. Page 249
  945.          Unsigned_integer ................................. Page 249
  946.          Long ............................................. Page 249
  947.          Unsigned_long .................................... Page 250
  948.       Real ................................................ Page 250
  949.    Intermixing Data Classes ............................... Page 251
  950.    Declaring An Integer Variable .......................... Page 251
  951.    Initializing A Variable ................................ Page 252
  952.    Integer Constants ...................................... Page 252
  953.    Printing Variables And Constants ....................... Page 254
  954.    Character Class ........................................ Page 254
  955.    Using Strings .......................................... Page 254
  956.       Declaring A String Variable ......................... Page 255
  957.       Initializing A String Variable ...................... Page 255
  958.       String Constants .................................... Page 256
  959.    Maximum Number Of Active Variables ..................... Page 257
  960.    Variable Names ......................................... Page 257
  961.    Predefined Variables ................................... Page 258
  962.       Restrictions ........................................ Page 261
  963.    Spl/I Command Format ................................... Page 262
  964.    Language  Syntax ....................................... Page 262
  965.    Structure .............................................. Page 263
  966.  
  967.  
  968.  
  969.  
  970.                           Table of Contents
  971.                                  xiix
  972.  
  973.    Procedures, Variable Types, And Order .................. Page 265
  974.       Procedures .......................................... Page 265
  975.       Data Types .......................................... Page 267
  976.          Global ........................................... Page 267
  977.          Automatic ........................................ Page 268
  978.       Order ............................................... Page 269
  979.    _++(X); ................................................ Page 270
  980.    _--(X); ................................................ Page 271
  981.    _Atol(destination,source); ............................. Page 272
  982.    _Atoi(destination,source); ............................. Page 272
  983.    _Atof(destination,source); ............................. Page 272
  984.    _Call(procedure_name); ................................. Page 274
  985.    _Cast(chickens, Class); ................................ Page 275
  986.    _Chdir(directory); ..................................... Page 277
  987.    _Clear(variable); ...................................... Page 278
  988.    _Cls(); ................................................ Page 279
  989.    _Color(value); ......................................... Page 280
  990.    _Command_queue_status(rtcode); ......................... Page 281
  991.    _Convert_to_bbs_case(s1); .............................. Page 282
  992.    _Copy_ch(ch,string,position); .......................... Page 283
  993.       Program Explanation ................................. Page 284
  994.    _Continue; ............................................. Page 287
  995.    _Curget(row,col); ...................................... Page 288
  996.    _Dayofweek(day); ....................................... Page 289
  997.    Database ............................................... Page 290
  998.       _Addrecord() ........................................ Page 290
  999.       _Loadrecord(rtcode,key) ............................. Page 290
  1000.       _Copyfrom(dest,field#) .............................. Page 290
  1001.       _Opendatabase(fname) ................................ Page 290
  1002.       _Closedatabase() .................................... Page 291
  1003.       _Getnextrecord(rtcode) .............................. Page 291
  1004.       _Settofirstrecord() ................................. Page 291
  1005.       _Deleterecord(rtcode,key) ........................... Page 291
  1006.       _Rewriterecord() .................................... Page 291
  1007.       _Copyto(field#,source) .............................. Page 291
  1008.    _Define_var(name,class); ............................... Page 292
  1009.       Warning! ............................................ Page 293
  1010.       Tip ................................................. Page 293
  1011.    _Display_memo_record(data_file,index_file,record_no.); . Page 295
  1012.    _Display_menu(cmds,fname); ............................. Page 296
  1013.    _Display_text(filename); ............................... Page 297
  1014.       Warning ............................................. Page 297
  1015.    _Dorinfo(path,prog); ................................... Page 298
  1016.    _Doorsys(path,prog); ................................... Page 299
  1017.    _Elseif(expression......); ............................. Page 300
  1018.       _Else; .............................................. Page 300
  1019.       _Eend; .............................................. Page 300
  1020.       Example Of Nesting Elseif Statements. ............... Page 302
  1021.    _Execute(memory,program,rtcode); ....................... Page 307
  1022.       Quickbasic Brun.exe ................................. Page 307
  1023.  
  1024.  
  1025.                           Table of Contents
  1026.                                  xix
  1027.  
  1028.    _Fclose(stream); ....................................... Page 310
  1029.    _Fcloseall(value); ..................................... Page 311
  1030.    _Fgets(string, N, Stream, Rtcode, Flag); ............... Page 312
  1031.    _Fildate(filename,y,m,d); .............................. Page 313
  1032.    _File_command_access(cmd_number,rtcode); ............... Page 314
  1033.    _Filexists(rtcode,filename); ........................... Page 315
  1034.    _Filsize(filename,size); ............................... Page 316
  1035.    _Filtime(filename,h,m,s); .............................. Page 317
  1036.    _Fopen(path,variable,type); ............................ Page 318
  1037.       Explanation ......................................... Page 319
  1038.       Maximum Open Files .................................. Page 319
  1039.    _For(start = Value : Condition End : Step); ............ Page 320
  1040.       _Fend; .............................................. Page 320
  1041.    _Fprintf(file,format{,variable 1, Variable 2, .....}); . Page 324
  1042.    _Free_var(name); ....................................... Page 325
  1043.    _Fscanf(return_code,stream,format{variables....}); ..... Page 326
  1044.       File Field Delimiters ............................... Page 326
  1045.    _Get_ctrled_input(ch,cmds); ............................ Page 328
  1046.    _Getc(char,force_upper); ............................... Page 329
  1047.    _Gets(str,len); ........................................ Page 330
  1048.    _Global_download(); .................................... Page 331
  1049.    Highlevel Commands ..................................... Page 332
  1050.       _Post_private_msg(); ................................ Page 332
  1051.       _Post_msg_to_sysop(); ............................... Page 332
  1052.       _Display_protocol_name(); ........................... Page 332
  1053.       _Goto_file_system(); ................................ Page 332
  1054.       _Goto_msg_system(); ................................. Page 332
  1055.       _Run_newmail_scan(); ................................ Page 332
  1056.       _Run_newuploads_scan(); ............................. Page 332
  1057.       _Goto_online_store(); ............................... Page 332
  1058.       _Show_who_is_online(); .............................. Page 332
  1059.       _Goto_log_off(); .................................... Page 332
  1060.       _Goto_display_version(); ............................ Page 332
  1061.       _Goto_status_system(); .............................. Page 332
  1062.       _Page_sysop(); ...................................... Page 332
  1063.       _Goto_adjust_user_settings(); ....................... Page 332
  1064.       _Display_callers(); ................................. Page 332
  1065.       _Goto_msg_center(); ................................. Page 332
  1066.       _Edit_conf_boards(); ................................ Page 332
  1067.       _Change_file_area(); ................................ Page 332
  1068.       _Search_for_file(); ................................. Page 332
  1069.       _Upload(); .......................................... Page 332
  1070.       _View_archive(); .................................... Page 332
  1071.       _Quick_file_list(); ................................. Page 332
  1072.       _Full_file_list(); .................................. Page 332
  1073.       _Kill_file(); ....................................... Page 332
  1074.       _Type_text_file(); .................................. Page 332
  1075.       _Select_protocol(); ................................. Page 332
  1076.       _Extract_file(); .................................... Page 332
  1077.       _Transfer_stats(); .................................. Page 332
  1078.  
  1079.  
  1080.                           Table of Contents
  1081.                                  xx
  1082.  
  1083.       _Edit_queue(); ...................................... Page 332
  1084.       _Download(); ........................................ Page 332
  1085.       _Internode_chat(); .................................. Page 332
  1086.       _Read_bulletins(); .................................. Page 332
  1087.       _Private_mail_scan(); ............................... Page 332
  1088.       _New_bulletin_scan(); ............................... Page 332
  1089.       _Change_msg_areas(); ................................ Page 332
  1090.       _Enter_message(); ................................... Page 332
  1091.       _Read_messages(); ................................... Page 332
  1092.       _Pack_messages(); ................................... Page 332
  1093.       _Drop_carrier(); .................................... Page 332
  1094.    _If(expression......); ................................. Page 333
  1095.       _Endif; ............................................. Page 333
  1096.       Nesting ............................................. Page 340
  1097.       Trick! .............................................. Page 340
  1098.    _Is_message_area_selected(area#, Rtcode); .............. Page 342
  1099.    _Locate(row,col); ...................................... Page 343
  1100.    _Main_command_access(cmd_number,rtcode); ............... Page 344
  1101.    _Make_mask(dest,source,mask); .......................... Page 345
  1102.    _Masked_input(flag,s1,mask); ........................... Page 346
  1103.    _Math(results = Format); ............................... Page 348
  1104.       Restrictions ........................................ Page 349
  1105.       Advanced Arithmetic Operations ...................... Page 349
  1106.          Bit Fiddling, Operators And Fields ............... Page 349
  1107.          Operators ........................................ Page 350
  1108.          Bitwise Logical Operators ........................ Page 350
  1109.             Bitwise And ................................... Page 350
  1110.             Bitwise Or .................................... Page 350
  1111.             Bitwise Exclusive Or .......................... Page 351
  1112.             Case Sensitive ................................ Page 351
  1113.             Usage ......................................... Page 351
  1114.          Bitwise Shift Operators .......................... Page 352
  1115.             Left Shift .................................... Page 352
  1116.             Right Shift ................................... Page 353
  1117.             Usage ......................................... Page 353
  1118.          Modulus Operator ................................. Page 354
  1119.    _Msg_command_access(cmd_number,rtcode); ................ Page 355
  1120.    _Printf(format{,variable 1, Variable 2, .....}); ....... Page 356
  1121.    _Push_into_queue(s1); .................................. Page 360
  1122.    _Putc(ch); ............................................. Page 361
  1123.    _Replace_ch(ch,string,position); ....................... Page 362
  1124.    _Rewind(file); ......................................... Page 363
  1125.    _Send_file(rtcode,file); ............................... Page 364
  1126.    _Setdisplay(type); ..................................... Page 365
  1127.    _Set_file_area(area); .................................. Page 366
  1128.    _Set_node_status(status); .............................. Page 367
  1129.    _Set_msg_area(area); ................................... Page 368
  1130.    _Setcmdkey(string); .................................... Page 369
  1131.    _Setlangname(string); .................................. Page 370
  1132.    _Setmenupath(string); .................................. Page 371
  1133.  
  1134.  
  1135.                           Table of Contents
  1136.                                  xxi
  1137.  
  1138.    _Spawn(program); ....................................... Page 372
  1139.       Warning ............................................. Page 372
  1140.    _Sprint(format); ....................................... Page 373
  1141.    _Sprintf(variable,format{,variable1, Variable2, .....}); Page 374
  1142.    _Storage(name,len); .................................... Page 375
  1143.    _Strcat(string1,string2); .............................. Page 376
  1144.    _Strindex(rcode,string1,string2); ...................... Page 377
  1145.    _Strlen(string,length); ................................ Page 379
  1146.    _Switch(ch); ........................................... Page 380
  1147.       _Case(value); ....................................... Page 380
  1148.       _Break; ............................................. Page 380
  1149.       _Send; .............................................. Page 380
  1150.    _Sysdate(year,month,day); .............................. Page 383
  1151.    _Systime(h,m,s,hu); .................................... Page 384
  1152.    _Timerset(v1,1000); .................................... Page 385
  1153.    _Timeup(v1,rtcode); .................................... Page 386
  1154.    _Unlink(file); ......................................... Page 387
  1155.    _While(expression......); .............................. Page 388
  1156.       _Wend; .............................................. Page 388
  1157.    Windows  ............................................... Page 389
  1158.       _Openwindow(win#,ur,uc,lr,lc,border_type,border_color)Page 389
  1159.       _Closewindow(win#); ................................. Page 389
  1160.       _Clearwindow(win#); ................................. Page 389
  1161. Spl/I Database System ..................................... Page 392
  1162.    Number Of Fields ....................................... Page 392
  1163. Defining A Database ....................................... Page 392
  1164. Creating Vetlink.scr ...................................... Page 396
  1165. Spl/I, A Functional Example ............................... Page 412
  1166. Itc, Itc2, And Itlink ..................................... Page 421
  1167.    Itc.exe ................................................ Page 421
  1168.    Itlink.exe ............................................. Page 421
  1169.       Linking Multiple Object Modules ..................... Page 422
  1170.    Compiler/Linker Limits ................................. Page 423
  1171.    Run.exe ................................................ Page 423
  1172. Memo Databases ............................................ Page 424
  1173.    Uses ................................................... Page 424
  1174.    How .................................................... Page 424
  1175.    Making A Memo Database ................................. Page 424
  1176.       Memo Infomall.txt ................................... Page 426
  1177. Mmu ....................................................... Page 427
  1178.    Mmu.exe ................................................ Page 427
  1179.       Command Line Switches ............................... Page 428
  1180.          /A ............................................... Page 428
  1181.          /B ............................................... Page 428
  1182.          /C ............................................... Page 428
  1183.          /N ............................................... Page 428
  1184.          /M ............................................... Page 428
  1185.          /F ............................................... Page 428
  1186.          /25 .............................................. Page 428
  1187.          /O ............................................... Page 428
  1188.  
  1189.  
  1190.                           Table of Contents
  1191.                                  xxii
  1192.  
  1193.          /B ............................................... Page 428
  1194.          /C ............................................... Page 428
  1195.          /N ............................................... Page 428
  1196.          /M ............................................... Page 428
  1197.          /25 .............................................. Page 429
  1198.          /O ............................................... Page 429
  1199.    Precompile Format ...................................... Page 429
  1200.    Mmu Commands ........................................... Page 429
  1201.       [Black] ............................................. Page 430
  1202.       [Red] ............................................... Page 431
  1203.       [Green] ............................................. Page 432
  1204.       [Blue] .............................................. Page 433
  1205.       [Yellow] ............................................ Page 434
  1206.       [Magenta] ........................................... Page 435
  1207.       [Cyan] .............................................. Page 436
  1208.       [White] ............................................. Page 437
  1209.       [Brown] ............................................. Page 438
  1210.       [Gray] .............................................. Page 439
  1211.       [Ltred] ............................................. Page 440
  1212.       [Ltgreen] ........................................... Page 441
  1213.       [Ltblue] ............................................ Page 442
  1214.       [Ltmagenta] ......................................... Page 443
  1215.       [Ltcyan] ............................................ Page 444
  1216.       [Blink] ............................................. Page 445
  1217.       [Normal] ............................................ Page 446
  1218.       [Bgblack] ........................................... Page 447
  1219.       [Bgred] ............................................. Page 448
  1220.       [Bggreen] ........................................... Page 449
  1221.       [Bgblue] ............................................ Page 450
  1222.       [Bgmagenta] ......................................... Page 451
  1223.       [Bgcyan] ............................................ Page 452
  1224.       [Bgwhite] ........................................... Page 453
  1225.       [Enter] ............................................. Page 454
  1226.       [Breakoff] .......................................... Page 455
  1227.       [Breakon] ........................................... Page 456
  1228.       [Moreoff] ........................................... Page 457
  1229.       [Moreon] ............................................ Page 458
  1230.       [Cls] ............................................... Page 459
  1231.       [Run_program Prg_name] .............................. Page 460
  1232. Osiris Language Database .................................. Page 461
  1233.    Cmdmake.exe ............................................ Page 462
  1234.    Ascii.txt .............................................. Page 462
  1235.    Cmds.key ............................................... Page 462
  1236.    Lankey.exe ............................................. Page 462
  1237. Designing Your Own Bbs .................................... Page 463
  1238.    Autoexec.prg ........................................... Page 463
  1239.    Getting Started ........................................ Page 463
  1240.    Main_menu .............................................. Page 475
  1241.    File Subsystem ......................................... Page 484
  1242.    Press_return ........................................... Page 490
  1243.  
  1244.  
  1245.                           Table of Contents
  1246.                                 xxiii
  1247.  
  1248.    Process_slash .......................................... Page 490
  1249.    Wrap Up ................................................ Page 492
  1250.    Tip .................................................... Page 492
  1251.    Spl/I Source Files ..................................... Page 493
  1252.    Speed Tip .............................................. Page 493
  1253. File Structures ........................................... Page 494
  1254.    _Hdrxxxxx .............................................. Page 494
  1255.    _Message_header ........................................ Page 495
  1256.       Conference Message Attributes ....................... Page 495
  1257.    _Keydef ................................................ Page 496
  1258.    _Access_sys ............................................ Page 496
  1259.    _User_record ........................................... Page 497
  1260.    _Mainpriv .............................................. Page 498
  1261.    _Lastcaller ............................................ Page 498
  1262.    _Filboard .............................................. Page 499
  1263.       Programmers Notes ................................... Page 499
  1264.    _Msgboard .............................................. Page 500
  1265.    _Filesbbs .............................................. Page 500
  1266.    Protocol_rec ........................................... Page 500
  1267.    _Msg_center_msg ........................................ Page 501
  1268.    _History_log ........................................... Page 501
  1269.       Packed Time Fields .................................. Page 501
  1270.       Packed Date Fields .................................. Page 501
  1271.          Packing A Date Field ............................. Page 501
  1272.          Unpacking A Date Field ........................... Page 502
  1273.    Outxx.qbs .............................................. Page 502
  1274.    _Outctl ................................................ Page 502
  1275.       Programming  Notes .................................. Page 503
  1276.          Osiris SE         Technical Reference Manual        Page   1
  1277.                                    Warranty
  1278.  
  1279.          Osiris carries no warranty of any kind. If the program proves   
  1280.          defective,  you  assume  the entire  cost  of  all  necessary   
  1281.          servicing, repair or correction.  
  1282.  
  1283.          I do not warrant, guarantee, or make claims regarding the use   
  1284.          of, accuracy, or reliability of this product. You rely on the   
  1285.          program  and  its results solely at your own risk.  I  cannot   
  1286.          accept  responsibility for system damage, loss of profit,  or   
  1287.          any  other  special,  incidental,  or  consequential   damage   
  1288.          resulting from the use or misuse of this product.
  1289.  
  1290.  
  1291.                        Distribution Policy And Copyright
  1292.  
  1293.                                    Copyright
  1294.  
  1295.          Despite  the  method of marketing, Osiris SE is  not  in  the   
  1296.          public  domain.  Osiris  SE  is  a  proprietary  product   of   
  1297.          International   TeleCommunications,  protected   under   U.S.   
  1298.          copyright  law,  International treaty provisions,  and  trade   
  1299.          secret laws of general applicability.
  1300.  
  1301.          Copying, duplicating, selling or otherwise distributing  this   
  1302.          product,  except  as expressly permitted  in  the  TEST-DRIVE   
  1303.          Distribution  Policy  is a violation of the  Law.   You  are,   
  1304.          however,  granted the right, in fact encourage, to  make  and   
  1305.          distribute  copies  of  this  TEST-DRIVE  version,  with  the   
  1306.          following provisions.
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.  
  1331.          Osiris SE         Technical Reference Manual        Page   2
  1332.  
  1333.                      -- Test-Drive Distribution Policy --
  1334.  
  1335.           1.   Feel free to distribute the TEST-DRIVE version as often   
  1336.                as you like. 
  1337.           2.   Please do not distribute the program without all of its 
  1338.                original files. 
  1339.           3.   You  must get written  permission  before  distributing         
  1340.                Osiris with any "Bundled" software packages. 
  1341.           4.   You may NOT accept payment for the program.  A  copying         
  1342.                fee   of  10.00  per  diskette  may  be  charged   when         
  1343.                distributed by a non-profit user-group. 
  1344.           5.   You may NOT alter the program or documentation  in  any                       
  1345.                way. 
  1346.           6.   Individuals,   groups,  vendors,  or   other   software            
  1347.                distribution companies who market diskettes  containing   
  1348.                the  TEST-DRIVE programs for profit must NOTIFY us,  in    
  1349.                writing, 30 days before distribution.
  1350.  
  1351.                              Hardware Requirements 
  1352.   
  1353.          Osiris SE is not compatible with single or dual floppy drives   
  1354.          and  computers with limited memory.  Your memory and  storage   
  1355.          areas  must be large enough to hold the files and work  areas   
  1356.          required during normal operations. 
  1357.  
  1358.          We have no plans of changing the program to fit systems  with   
  1359.          limited capacity.  The following list represents the  minimum   
  1360.          configuration  your  system  should  have  to   maximize  the   
  1361.          potential of the program.
  1362.  
  1363.           -    IBM Personal Computer (or true compatible)  with  512K   
  1364.                (minimum)  RAM,  450K  free  for  Osiris.  I   suggest,   
  1365.                although NOT  required,  512K  of  AST   EEMS         
  1366.                3.20 or LIM 4.00 RAM  
  1367.           -    PC-DOS or MS-DOS, Ver. 3.0 or later (other operating 
  1368.                environments such as DESQview  may be used). 
  1369.           -    Asynchronous communications (serial port) adapter 
  1370.           -    RS-232 cable with the standard nine pins connected (some  
  1371.                modem cables do not have all the pins hooked-up). 
  1372.           -    Intelligent AT command set modem  
  1373.           -    Eighty column monochrome or color monitor 
  1374.           -    Voice-grade telephone connection for modem 
  1375.           -    Hard disk drive
  1376.  
  1377.                             Archive Contents, Exe's
  1378.  
  1379.          I'll  attempt to list all the EXE files contained within  the   
  1380.          SE  archives, along with some of the other  important  files,   
  1381.          along with a brief explanation. I want to apologize if I miss   
  1382.          any and I hope you'll let us know about it.
  1383.  
  1384.  
  1385.  
  1386.          Osiris SE         Technical Reference Manual        Page   3
  1387.  
  1388.  
  1389.          Zmodem.exe,  a  zmodem  driver.  You're  free  and  in   fact   
  1390.          encouraged to use whatever driver works best on your system.
  1391.  
  1392.          Ymodem.exe,  a Ymodem batch and Ymodem-G driver. You're  free   
  1393.          and  in fact encouraged to use whatever driver works best  on   
  1394.          your system.
  1395.  
  1396.          Xmodem.exe, a Xmodem and Xmodem1k driver. You're free and in   
  1397.          fact,  encouraged to use whatever driver works best  on  your   
  1398.          system. 
  1399.   
  1400.          Chksum.exe,  figures  and  prints  a  CAT  file   integrity   
  1401.          checksum on any give file or files.
  1402.  
  1403.          Index.exe,  used by several programs to rebuild  the  newmail   
  1404.          indices.
  1405.  
  1406.          Mmu.exe, Multi-Menu compiler.
  1407.  
  1408.          Ovl01818.exe, one of the Osiris VMS overlays. Must be in  the   
  1409.          same directory as Osiris.exe.
  1410.  
  1411.          Bullgen.exe, used to generate system bulletins.
  1412.  
  1413.          Confile.exe,  converts  Opus/Fido style  Files.BBS  files  to   
  1414.          Osiris Files.qbs format.
  1415.  
  1416.          Fam.exe,  used to manage Osiris File areas. Move files,  edit   
  1417.          listings, etc.
  1418.  
  1419.          Cat.exe, Osiris Automatic maintenance system. 
  1420.  
  1421.          Sphinx.exe, sysop stand alone Message editor.
  1422.  
  1423.          Ulink.exe,  used to generate conversation chains in  echomail   
  1424.          areas.
  1425.  
  1426.          Osm.exe,  Osiris system manager. Used to create  file  areas,   
  1427.          message areas, define menu keys, protocol drivers, etc. 
  1428.          Osm.ovl, Overlay File.
  1429.  
  1430.          Osiris.exe, Main Osiris program. 
  1431.  
  1432.          Imx.exe,  front-end that answers the phone and calls  Osiris.   
  1433.          For those that do not use mailers.
  1434.  
  1435.          Readarc.exe,  an echomail statistics program. Shows  who  you   
  1436.          are exporting mail to and how much.
  1437.  
  1438.  
  1439.  
  1440.  
  1441.          Osiris SE         Technical Reference Manual        Page   4
  1442.  
  1443.          Export.exe, Halcyon echomail export program.
  1444.  
  1445.          Import.exe, Halcyon echomail import program.
  1446.  
  1447.          Traffic.exe, Halcyon echomail statistics program. Shows  all   
  1448.          kinds of echomail statistics.
  1449.  
  1450.          Event.exe, used to compile the event.ini file for IMX.
  1451.  
  1452.          Scan.exe,  a  virus  checker  used by  Osiris  to  check  new   
  1453.          uploads. 
  1454.  
  1455.          Osetup.exe,  automatic  installation program for  NEW  Osiris   
  1456.          sysops.
  1457.  
  1458.          User.exe, used to manage Osiris user records.
  1459.  
  1460.          Ovl01819.exe, VMS overlay. Should be in the same directory as   
  1461.          Osiris.exe.
  1462.  
  1463.          Mkpost.exe,  used  to  generate text  files  suited  for  BBS   
  1464.          displays. 
  1465.  
  1466.          Itc.exe, multiple stage SPL/I compiler.
  1467.  
  1468.          Itlink.exe, SPL/I run time linker.
  1469.  
  1470.          Memo.exe, Memo Database compiler. 
  1471.           
  1472.          Cmds.dat, Language database.
  1473.  
  1474.          Ascii.txt, ASCII version of language database.
  1475.  
  1476.          Cmdmake.exe, Language database compiler.
  1477.  
  1478.          Lankey.exe, Language command Key editor.
  1479.  
  1480.          Setlock.exe,  Used to mass set EXE/COM/OVL/OVR files to  READ   
  1481.          ONLY  status,  to  prevent share volitions.  Only  needed  on   
  1482.          systems running on a Network.
  1483.  
  1484.                                 Test-Drive Mode 
  1485.   
  1486.          Once you have installed Osiris, you may download a special 30  
  1487.          day  test drive key from Vetlink III at 1-314-334-6359.  Just  
  1488.          type  /DEMO  from the main menu. Once you have  received  the  
  1489.          test  drive  key,  all you have to do is  move  it  into  the  
  1490.          OSIRIS= directory.
  1491.  
  1492.          Without  the special 30 day test drive key, the DEMO copy  of  
  1493.          Osiris  will only support 20 user records. You can have  more  
  1494.          than 20 user records, but Osiris will exit to DOS should  you  
  1495.          attempt to use a record higher than 20.
  1496.          Osiris SE         Technical Reference Manual        Page   5
  1497.  
  1498.                                  Introduction
  1499.  
  1500.          First  things  first, THANK YOU for trying Osiris.  I'm  sure   
  1501.          you'll find that it has everything you could possible want in   
  1502.          a BBS. 
  1503.  
  1504.          You're   no  doubt  a  bit  stunned  by  the  size   of   the   
  1505.          documentation,  the doc's from HELL, and anyone would be.  No   
  1506.          matter  how  good  a program is, if you  don't  document  the   
  1507.          features,  they  will not do you any good. Needless  to  say,   
  1508.          we've attempted to provide as much documentation as  possible   
  1509.          and in clear, easy to read, terms.
  1510.  
  1511.          I  suggest  that you read the first 200 pages before  you  do   
  1512.          anything.  You don't have to print them, at least  not  right   
  1513.          away, but do read the first 200 or so pages before  beginning   
  1514.          the installation process. 
  1515.  
  1516.          If you have a question, check the table of contents to see if   
  1517.          there  is a TOPIC listed that relates to your  question.  The   
  1518.          documentation  is extensive and seventy-five percent  of  the   
  1519.          questions  our  technicians answered last year  WAS  in  this   
  1520.          document and they just quoted from it. 
  1521.  
  1522.                                Not Just A Bbs Program
  1523.  
  1524.               Osiris  is NOT just a BBS program, it is  an  INTEGRATED   
  1525.               BBS operating SYSTEM. Unlike many other BBS programs, we   
  1526.               did not just STOP with the BBS itself. We have attempted   
  1527.               to  provide you with everything you could possible  need   
  1528.               to run a BBS.
  1529.  
  1530.                                      Cost
  1531.  
  1532.               Osiris cost less than any other BBS on the market. There   
  1533.               are  several  BBS'  that have a  base  price  less  than   
  1534.               Osiris  but with those BBS', the base price only  covers   
  1535.               the   BBS  program itself. Many companies  charge  extra   
  1536.               for  add-on programs that we provide with the package.
  1537.  
  1538.               A lot BBS' do not even provide the add-on programs.  You   
  1539.               have to call all over the country looking for 3rd  party   
  1540.               add-on programs and in the process, run up a huge  phone   
  1541.               bill and you still have to pay for the programs when you   
  1542.               do find them.
  1543.  
  1544.               The  cost  of the Osiris package is less  than  $6.00  a   
  1545.               program, based on a single line system. You can't  find,   
  1546.               download,  and  register a shareware  program  for  that   
  1547.               amount.  
  1548.              
  1549.  
  1550.  
  1551.          Osiris SE         Technical Reference Manual        Page   6
  1552.  
  1553.                                     Set Up 
  1554.                                    (Osetup)
  1555.  
  1556.                                Important Information
  1557.  
  1558.               Osetup  created  a PRGS directory, in your  Osiris  root   
  1559.               directory, and moved all the *.EXE and *.COM files  into   
  1560.               it.   Osetup  also  added  a  PATH  statement  to   your   
  1561.               autoexec.bat file pointing to this directory.
  1562.  
  1563.               I  did that to keep the number of files in  your  Osiris   
  1564.               directory  to a minimum. You should NOT attempt  to  run   
  1565.               any of these programs FROM the PRGS directory. Log  into   
  1566.               your  OSIRIS directory and run the program  from  there.   
  1567.               DOS  will find the program you want to run by  searching   
  1568.               the PATH.
  1569.  
  1570.               Again,  you must be your Osiris= directory when you  RUN   
  1571.               any program. The program you're RUNNING doesn't have  to   
  1572.               be there, but you do.
  1573.  
  1574.          Osetup set up the Message Center for Private Mail between you   
  1575.          and your callers and for private mail between callers. Osiris   
  1576.          and CAT maintain the message center and you don't need to  do   
  1577.          anything to it.
  1578.  
  1579.          Osetup  created  ONE PUBLIC conference  area  called  GENERAL   
  1580.          TOPICS.  Osiris  uses  the conference areas  to  hold  public   
  1581.          messages to other individuals or messages to ALL. It's up  to   
  1582.          YOU  to create or define each area. I created the  first  one   
  1583.          for  you, to help get you started. See section on  Conference   
  1584.          Areas for further details.
  1585.  
  1586.          Osetup  created  a file area, you place files you  want  your   
  1587.          callers to download in a file area, and you may create  MORE,   
  1588.          up to 32721, when you decide you need them. 
  1589.  
  1590.          Osetup also created a UPLOAD area called files\uploads. This   
  1591.          is where ALL uploads for file area number one go. 
  1592.  
  1593.          Because of security problems, you must NEVER define any  file   
  1594.          area and point both the UPLOAD path and the DOWNLOAD path  to   
  1595.          the  same directory. This does mean you'll have to  MOVE  the   
  1596.          new  uploads  to  their download areas  before  they  CAN  be   
  1597.          downloaded, but it's well worth it.
  1598.  
  1599.          Even if you decide that Osiris isn't for you, make sure  that   
  1600.          the  software you DO pick gives you this option.  With  other   
  1601.          BBS  programs,  like  Opus  and  Maximums,  it's  even   MORE   
  1602.          important.
  1603.  
  1604.  
  1605.  
  1606.          Osiris SE         Technical Reference Manual        Page   7
  1607.  
  1608.          Most of the other "set up" items were sub-systems  (messages,   
  1609.          files, main, etc.) with default command keys, flag  settings,   
  1610.          and of course, menus.
  1611.  
  1612.                                  Local Testing
  1613.  
  1614.          Directly  following  the Osetup installation,  most  want  to   
  1615.          log-on in local mode to test the installation. Osetup  should   
  1616.          have created, in your OSIRIS= directory, a batch file  called   
  1617.          "LOCAL.BAT."
  1618.  
  1619.          You  can  use  this to log-on locally and  TEST  the  primary   
  1620.          installation.
  1621.  
  1622.                                     Reboot First
  1623.            
  1624.               Don't forget to reboot your computer so the SET commands   
  1625.               Osetup added to your autoexec.bat file can take effect.
  1626.  
  1627.          Local.bat should contain:
  1628.  
  1629.          osiris -L -B2400 -P2 -N1 
  1630.  
  1631.          -P2  may be -P1 on your system. This is the  MINIMUM  command   
  1632.          line configuration required to log-on locally.
  1633.  
  1634.          You  MUST,  and  this is very important, be  in  the  OSIRIS=   
  1635.          directory  before  you attempt to log-on  locally  with  this   
  1636.          batch file. 
  1637.                                 On-Line Testing
  1638.  
  1639.          The  next  thing you most likely want to try is  putting  the   
  1640.          basic installation on-line. Most of you will not want to  RUN   
  1641.          the  system AS IS, but you do want to see what it is like  to   
  1642.          log-on remotely.
  1643.  
  1644.          One common mistake is just typing "OSIRIS" at the DOS command   
  1645.          line and expect it to come on-line and that will NOT work. 
  1646.  
  1647.          If you have a mailer front-end then read the section in  this   
  1648.          document called "Getting On-Line".
  1649.  
  1650.          If  you  do not have a front-end, then  read  the  section(s)   
  1651.          "Getting On-Line" and  "IMX Osiris SE Front-end". 
  1652.  
  1653.                                      Menus 
  1654.                                 Beginners Menus
  1655.  
  1656.          You  have  two types of display files, those  having  a  file   
  1657.          extension of ANS and one with an extension of ASC. 
  1658.  
  1659.          The  main  menu  file  that I'll LOOK for  is  "MAIN.ANS  and   
  1660.          MAIN.ASC."  
  1661.          Osiris SE         Technical Reference Manual        Page   8
  1662.  
  1663.          I'll  decide  which  file to display  based  on  the  callers   
  1664.          GRAPHIC  settings, ANSI or NON-ANSI. If you have ANSI  turned   
  1665.          on, I'll look FIRST for MAIN.ANS. If it exists, I'll show it. 
  1666.          If it does NOT exist, then I'll look for  Main.asc and if  it   
  1667.          exists,  it'd better or you get nothing, then I'll show  that   
  1668.          one.  If  you  don't  support  ANSI  I'll  skip  directly  to   
  1669.          MAIN.ASC.
  1670.  
  1671.          The first step to creating a new main menu is to load OSM and   
  1672.          go  to the MAIN section. Here you'll find all  the  functions   
  1673.          available  to  you. Decide which ones you want,  the  command   
  1674.          keys that you want used, the access level and flag  settings,   
  1675.          if any, and make the changes. Jot down which command keys you   
  1676.          used  for  each function. The entire process should  take  no   
  1677.          longer than a couple of minutes.
  1678.  
  1679.          The next step is to create a MAIN.ANS file. This is the  file   
  1680.          that gets displayed if the caller supports ANSI graphics.
  1681.  
  1682.          Load  an ansi draw program, THEDRAW is highly recommend,  and   
  1683.          draw  the menu the way you want it to look. You can  use  any   
  1684.          colors  you  want,  but  I do advice  that  you  avoid  using   
  1685.          background  colors  other  than  BLACK.  You  should  clearly   
  1686.          outline the KEY required to activate each function.
  1687.  
  1688.          One  word of warning, do not go pass column seventy eight  on   
  1689.          the  screen.  You'll want to avoid the DOS  automatic  screen   
  1690.          wrap and you do that by keeping the width to seventy eight or   
  1691.          less.
  1692.  
  1693.          Once  you've got the menu LOOKING the way you want,  save  it   
  1694.          using CLEAR SCREEN NO, HOME CURSOR NO, ANSI YES, and  DISPLAY   
  1695.          SPEED 0.
  1696.  
  1697.          The "save" file name should be MAIN.ANS.
  1698.  
  1699.          You'll need to edit MAIN.ANS with your text editor and remove   
  1700.          the  extra  blank lines at the end of the file, to  keep  the   
  1701.          menu from scrolling off the screen.
  1702.  
  1703.          The  ANSI  program  MAY use the ANSI  VERTICAL  tab  sequence   
  1704.          instead  of  blank  lines.  Check the file  and  if  you  see   
  1705.          something  like  "<-[20H, <-[21H, or <-[24H." The  <-  is  an   
  1706.          arrow but WordStar doesn't allow that character, at the  end,   
  1707.          remove them.
  1708.  
  1709.          That's basically it, you have a full functional MAIN menu for   
  1710.          ANSI callers.
  1711.  
  1712.          You  must also create a menu for callers that do NOT  support   
  1713.          ANSI. 
  1714.  
  1715.  
  1716.          Osiris SE         Technical Reference Manual        Page   9
  1717.  
  1718.          Use your Text editor to create it and the layout is still  up   
  1719.          to you. You should clearly outline the command keys needed to   
  1720.          active each selection. Some people encase the command key  in   
  1721.          (), others use ) to separate the command key from the rest of   
  1722.          the text. Do NOT use the open and close square brackets, [ or   
  1723.          ].  MMU  reserves  opening and closing  brackets  as  command   
  1724.          indicators.
  1725.  
  1726.          Once  you've completed the NON-ANSI screen, save the file  as   
  1727.          MAIN.ASC.
  1728.  
  1729.          That's all there is to creating menus for Osiris. Thedraw  is   
  1730.          a  very  powerful ANSI screen editor, the  prefect  tool  for   
  1731.          doing color menus. 
  1732.                             Slightly Advanced Menus
  1733.  
  1734.          A slightly advanced method of doing menus involves  combining   
  1735.          the  ANSI and NON-ANSI menu into one file and compressing  it   
  1736.          to speed up the display.
  1737.  
  1738.          Take  the  MAIN.ANS  file and rename it  to  M.ANS.  This  is   
  1739.          important because we don't want to FIND the MAIN.ANS. We want   
  1740.          to ALWAYS use the MAIN.MMU for ALL CALLERS.
  1741.  
  1742.                    NOTE:  I  assume  that you  did  not  use   
  1743.                    animated  ansi  displays.  You  may   NOT   
  1744.                    convert animated ANSI files.
  1745.  
  1746.          Load M.ANS into Thedraw and then save it with a clear screen.
  1747.  
  1748.          Now you get to use MMU.EXE, the MMU compiler.
  1749.  
  1750.          Use the following command line:
  1751.  
  1752.          MMU M.ANS /A /F
  1753.  
  1754.          Rename  M.MMU to MAIN.MMU and  you now have a  finished  main   
  1755.          menu  file,  compressed,  that  allows  me  to  handle  color   
  1756.          displays depending on the caller's graphic settings. You have   
  1757.          one  file  instead  of two.
  1758.  
  1759.          See the section on MMU for a detailed explanation of MMU.
  1760.  
  1761.                    WARNING:  Do  not attempt  to  load  this   
  1762.                    finished file and edit it. If you want to   
  1763.                    make  changes  go back to the  m.ans  and   
  1764.                    make  the changes there then  follow  the   
  1765.                    steps  outlined  above to  create  a  new   
  1766.                    main.mmu.
  1767.  
  1768.          That's  all there is to making menus for Osiris. You can  now   
  1769.          make new menus for the message areas, file areas, main  menu,   
  1770.          store, and other areas. 
  1771.          Osiris SE         Technical Reference Manual        Page  10
  1772.  
  1773.                                  Odds And Ends 
  1774.                              Environment Variable
  1775.  
  1776.          Osiris requires TWO environment variables, OSIRIS=DRIVE:\PATH   
  1777.          and TXT=DRIVE:\PATH.
  1778.  
  1779.          DRIVE: is the DRIVE letter and \PATH is the FULL path to  the   
  1780.          directory.
  1781.  
  1782.          OSIRIS=  should  point  to the directory  that  contains  the   
  1783.          Osiris system files (user records, message board definitions,   
  1784.          file area definitions, etc.).
  1785.  
  1786.          TXT= should point to the directory that contains the MESSAGES   
  1787.          , HDRxxxx.SYS and TXTxxxx.SYS.
  1788.  
  1789.          Osetup SHOULD have added the definitions to your AUTOEXEC.BAT   
  1790.          file. 
  1791.  
  1792.          OSIRIS=C:\OSIRIS 
  1793.          TXT=C:\OSIRIS\MSGS
  1794.  
  1795.          There's also an optional setting you can use, HDR=, to  SPLIT   
  1796.          the message base between drives and directories. The  section   
  1797.          on Halcyon explains why you may want to do that.
  1798.  
  1799.                                       Spl/I
  1800.  
  1801.          SPL,  Structured  Programming Language version  I,  lets  you   
  1802.          create  questionnaires, and other items by  creating  command   
  1803.          programs   with  commands  to  generate  color,  branch,   do   
  1804.          conditional  testing, etc. over 150 different SPL/I  command.   
  1805.          See section on SPL/I for further DETAILS.
  1806.  
  1807.                                    Main Menu 
  1808.   
  1809.          The MAIN MENU  display file, the  one that shows the   system   
  1810.          commands,   for   "Full"  help  is   MAIN.(ASC/MMU/ANS)   and   
  1811.          resides  in  the Osiris  text support directory.   This  file   
  1812.          should list all the available commands for the main menu. 
  1813.  
  1814.          You  can use SPL/I commands, so you're free to do just  about   
  1815.          anything  you  can think of, including adding  commands  that   
  1816.          don't  normally  exist. See section on MENUS for  details  on   
  1817.          construction.
  1818.  
  1819.          The  HELP file for the  Main Menu  is  MAINHELP.(ASC/MMU/ANS)    
  1820.          and should be placed in the Osiris text support directory.
  1821.  
  1822.          From the main menu you have 15 built in function and 10  user   
  1823.          definable functions at your disposal.
  1824.  
  1825.  
  1826.          Osiris SE         Technical Reference Manual        Page  11
  1827.  
  1828.          All  25 functions have ACCESS levels and KEY command  flag(s)   
  1829.          available for each individual command. 
  1830.  
  1831.          It's  up  to you to set the command KEY (A, B,  C,  etc.)  to   
  1832.          active  each function as well as the ACCESS level and  flags,   
  1833.          if needed.
  1834.  
  1835.          Those you do NOT want to use, set the ACCESS LEVEL to 32722. 
  1836.  
  1837.                                   Conference Area
  1838.  
  1839.               This  takes  you  to the message  area(s)  dedicated  to   
  1840.               public messages. 
  1841.  
  1842.               These areas must be setup or defined by you. Follow  the   
  1843.               guide  lines laid out in the Conference section of  this   
  1844.               document.
  1845.  
  1846.               The Osetup.exe program set up ONE public conference area   
  1847.               for general conversations.
  1848.  
  1849.               It's up you to decide IF public message area(s) will  be   
  1850.               used. Some systems, those run by companies, may not need   
  1851.               or want to use such areas.
  1852.  
  1853.               If  this  is  the case,  set the access  level  for  the   
  1854.               function to 32722 and do not list the command key on the   
  1855.               full help menu. 
  1856.                                      File Area
  1857.  
  1858.               Takes you to the file area(s). All files on the  system,   
  1859.               those available for downloading, can be found here.
  1860.  
  1861.               It's  up  to the you to set up the  file  areas.  Osetup   
  1862.               installed  one  for you. See section on File  Areas  for   
  1863.               further details.
  1864.  
  1865.               If  you  don't  intend to  have  file(s)  available  for   
  1866.               downloading,  set  the access level to 32722  and  don't   
  1867.               list  a command key for this function on your full  help   
  1868.               menu. 
  1869.                                       Log Off
  1870.  
  1871.               Allows  you  to LOG off the system with  the  option  of   
  1872.               leaving the sysop a message.
  1873.  
  1874.               You  do  not have to use this function and  hanging  up   
  1875.               will  not  harm  the  software nor  will  it  cause  any   
  1876.               problems.
  1877.  
  1878.               You  may want to use a slash command, covered later,  to   
  1879.               allow  a QUICK log off without an optional  message.  If   
  1880.               so, create an SPL/I file as follows. 
  1881.          Osiris SE         Technical Reference Manual        Page  12
  1882.  
  1883.               copy con OFF.SCR 
  1884.               _DROP_CARRIER();^Z
  1885.  
  1886.               Compile with ITC.EXE by typing the following at the  DOS   
  1887.               prompt:
  1888.  
  1889.               ITC OFF 
  1890.                
  1891.               Now link with ITLINK using the following command
  1892.  
  1893.               ITLINK OFF 
  1894.  
  1895.               Copy the OFF.PRG to your TEXT directory.
  1896.  
  1897.               If you type /OFF, notice the '/'slash . . . it indicates   
  1898.               a slash command, I'll instantly log you off. 
  1899.  
  1900.               The  /OFF can be used from any one of the  three  primary   
  1901.               menus; Main, Conference Area(s), or File Area(s).
  1902.  
  1903.                                     User Status
  1904.  
  1905.               This  shows  the  sys_stat.(asc/ans/mmu)  file  normally   
  1906.               shown during the initial log-in process. 
  1907.  
  1908.                                       Bulletin
  1909.  
  1910.               This will display a menu listing all the current  system   
  1911.               bulletins,  created with Bullgen.exe, and allows you  to   
  1912.               read any or all of the old bulletins.
  1913.  
  1914.               The menu is internal and requires no additional set up. 
  1915.                
  1916.                                      Page You
  1917.  
  1918.               This  function allows the caller to page you for a  real   
  1919.               time chat.
  1920.  
  1921.               When  the caller pages you, you'll hear a beeping  sound   
  1922.               and there will be a short message on the screen  telling   
  1923.               you that so and so is paging you.
  1924.  
  1925.               To  answer the page, press 'C' (Chat). If you press  any   
  1926.               other key, the page process will terminate.
  1927.  
  1928.               The Node.ini file contains 7 fields, one for each day of   
  1929.               the week. Each field allows you to specify the  starting   
  1930.               time and the ending time for paging along with the  name   
  1931.               of a file to show when a caller tries to page outside of   
  1932.               those hours.
  1933.  
  1934.  
  1935.  
  1936.          Osiris SE         Technical Reference Manual        Page  13
  1937.  
  1938.               The Chat function has TWO modes, ANSI and NON-ANSI.  The   
  1939.               NON-ANSI  mode is ONE way. ONE way means that  only  one   
  1940.               person can type at a time. 
  1941.  
  1942.               TWO way means the display screen will split in half with   
  1943.               two  windows,  the top for you and the  bottom  for  the   
  1944.               caller.  You  can  both type at the  same  time  without   
  1945.               overwriting the each others text.
  1946.  
  1947.               The Chat function has 4 special keys. Two that can  only   
  1948.               be  used by you and two that can be used by you and  the   
  1949.               caller.
  1950.  
  1951.               ESC (You) - Ends chat mode and returns the caller to the   
  1952.               main menu.
  1953.  
  1954.               Ctrl-L  (Either Party) - Clears that parties window,  if   
  1955.               in TWO way mode).
  1956.  
  1957.               Ctrl-R  (Either Party) - Clears the screen  and  redress   
  1958.               the windows.
  1959.  
  1960.               ALT-P (You) - Causes the current screen to be dumped  to   
  1961.               a text file called "CHAT.DMP," a screen snapshot.  
  1962.  
  1963.               If  'CHAT.DMP'  already  exists, the  snapshot  will  be   
  1964.               appended to it. 
  1965.                                    Change Set-Up 
  1966.   
  1967.               This  takes  you to an area that allows  you  to  change   
  1968.               certain user record setting.
  1969.  
  1970.                                       Version
  1971.  
  1972.               Shows  which   version of Osiris you're  running.   I'll   
  1973.               also display the type  and version  of DOS you're  using   
  1974.               and the type of multi-tasking software, if any.
  1975.  
  1976.               You  also have the option, if you're running a  Network,   
  1977.               of  having the name of Network Software/Hardware  shown.   
  1978.               Just  make a text file called "Network.def."  It  should   
  1979.               contain the name of the network you're running, use only   
  1980.               ONE line.
  1981.  
  1982.               Total available memory, conventional and EMS, will  also   
  1983.               be  displayed along with the amount  left.  Conventional   
  1984.               memory doesn't reflect what you might think it does. DOS   
  1985.               will  attempt to give any program that loads  1  million   
  1986.               bytes of memory, whether it needs it or not. 
  1987.  
  1988.  
  1989.  
  1990.  
  1991.          Osiris SE         Technical Reference Manual        Page  14
  1992.  
  1993.               That means the program may be assigned a lot more memory   
  1994.               than  it  actually  needs to run. If  less  memory  were   
  1995.               available,  (TSR,  Disk Cache, etc.) the  program  would   
  1996.               still run. 
  1997.                                 Who Is On-Line 
  1998.   
  1999.               Displays  WHO is on-line at the same  time you are.
  2000.  
  2001.               This feature will not work on single line systems.
  2002.  
  2003.               The Who's On-Line Display would look like:
  2004.  
  2005.               (#)  Status               Caller 
  2006.               ___  ___________________  _____________________
  2007.  
  2008.                 1  In External Program  John Doe (City State) 
  2009.  
  2010.               Possible Status Messages:
  2011.  
  2012.               No Caller This Node 
  2013.               Unavailable for CHAT 
  2014.               In External Program 
  2015.               Available for CHAT 
  2016.               Transferring a FILE
  2017.  
  2018.               I'll  handle changing the status line internally  EXCEPT   
  2019.               when you're in an SPL/I command file. 
  2020.  
  2021.               When in an SPL/I file that may keep the caller away from   
  2022.               one of the primary menus for an extended period of time,   
  2023.               you should manual change the status line with the  SPL/I   
  2024.               command _SET_NODE_STATUS().
  2025.  
  2026.               Callers  not wishing to have their names displayed  will   
  2027.               always  show up as "No Caller This Node" and  any  SPL/I   
  2028.               request to change that status will be ignored.
  2029.  
  2030.                    Unavailable  for  CHAT,  Transferring   a   
  2031.                    FILE,  and In External Program  does  NOT   
  2032.                    stop  another  node from  SENDING   Email   
  2033.                    since that Email will be held until   the   
  2034.                    node  IS  able to receive  it.  Only  'NO   
  2035.                    Caller  This  Node' will  PREVENT  anyone   
  2036.                    from sending Email to that node.
  2037.  
  2038.                                    Message Center
  2039.  
  2040.               This is where you can find all private messages  between   
  2041.               individuals on the system. You can read, reread  private   
  2042.               message, or enter private messages from this area.
  2043.  
  2044.  
  2045.  
  2046.          Osiris SE         Technical Reference Manual        Page  15
  2047.  
  2048.               The Message center also has a NEW mail check,  triggered   
  2049.               during the log-on process, that automatically scans  for   
  2050.               NEW  mail  addressed to you. If you have  mail,  I  will   
  2051.               display the message and you have the option of REPLYING.
  2052.  
  2053.               When you enter a message, you have the option of sending   
  2054.               CARBON   copies  of  the  message,  up  30,   to   other   
  2055.               individuals.  You  also  have the option  of  having  ME   
  2056.               notify  YOU  when  addressee receives the message.
  2057.  
  2058.               The  Message  Center has  its own  internal  SHORT  menu   
  2059.               system that's very functional:
  2060.  
  2061.    Msg # 1 [1 .. 386] [R]eply, [N]onStop, [H]elp, [D]isplay Current,  
  2062.    [-]Reverse Direction, [I]ndividual, [E]nter, [T]hread, [Q]uit,  
  2063.    [ENTER] for Next Message : 
  2064.                                       [I]ndividual
  2065.  
  2066.                    Let's    you   enter   a   MESSAGE   NUMBER     and   
  2067.                    providing   it is TO you or FROM you, I'll  display   
  2068.                    it. 
  2069.                                         [T]hread
  2070.  
  2071.                    If  the message is THREADED, has replies or  is   a   
  2072.                    reply  to another message, you can go to the THREAD    
  2073.                    system and follow the conversation threads.
  2074.  
  2075.                    From the THREAD menu you have: 
  2076.   
  2077.                     Msg 274 [1...399] [R]eply,  
  2078.                     [-] Reverse Thread Direction, e[X]it Thread,  
  2079.                     [ENTER] for Next Message: 
  2080.   
  2081.                    You will only be shown messages in the THREAD  that   
  2082.                    are TO or FROM you. 
  2083.   
  2084.                    I'll save your CURRENT message location BEFORE  you   
  2085.                    enter  the THREAD system. When you exit the  THREAD   
  2086.                    system, I'll place you back on the original message.
  2087.  
  2088.                                    File Attaches
  2089.  
  2090.                    If  you have access, you can add file  attaches  to   
  2091.                    the  message center  messages.
  2092.  
  2093.                    I will restrict the name of the file to the DOS  12   
  2094.                    character   limit,  no  path  designator  will   be   
  2095.                    allowed,  and  ALL files MUST be in  the  directory   
  2096.                    "UPLOADS,",   a   sub-directory  in   the   OSIRIS=   
  2097.                    directory, this is the message attach staging area. 
  2098.   
  2099.  
  2100.  
  2101.          Osiris SE         Technical Reference Manual        Page  16
  2102.  
  2103.                    Osiris  will automatically create  this  directory,   
  2104.                    providing you're ON-LINE. If you're going to attach   
  2105.                    a  message locally, with Sphinx, and the  directory   
  2106.                    doesn't exist, you'll have to create it manually.
  2107.  
  2108.                    If  you're  entering  the  message  locally,   with   
  2109.                    Sphinx,  you  will  have to copy the  file  to  the   
  2110.                    staging area.
  2111.  
  2112.                    If  you're  a caller, you will HAVE to  upload  the   
  2113.                    file you want to attach to the message. I will  NOT   
  2114.                    allow you to attach a system file, a system file is   
  2115.                    a  file  listed  in one of the  file  areas,  to  a   
  2116.                    message.
  2117.  
  2118.                    I'll place the file you've uploaded in the  staging   
  2119.                    area  and  as soon as the addressee  downloads  the   
  2120.                    file, I'll delete it. 
  2121.                     
  2122.                    NOTE:  CAT will NOT remove any message that has  an   
  2123.                    active FILE ATTACH.
  2124.  
  2125.                                    Download 
  2126.   
  2127.               This  is  the same as the download command in  the  file   
  2128.               areas  with  one  small change. If  you  use  wild  card   
  2129.               characters, you will not have the option of  restricting   
  2130.               the matches to a specific file area.
  2131.  
  2132.                                     User List 
  2133.   
  2134.               Displays a list of the current callers to the system.  
  2135.  
  2136.               You  can enter a  search string if  you're looking for a   
  2137.               specific  name.  The search is a basic slide  match  and   
  2138.               CASE is unimportant.
  2139.  
  2140.               Example: JO would match John, Jones, Joe, etc.
  2141.  
  2142.               Pressing <Enter> will give you a complete list.
  2143.  
  2144.               Callers  not wishing to have their names and  places  of   
  2145.               origin shown will have PRIVATE LISTING and XXXXXXXX used   
  2146.               in place of their real name and place of origin.
  2147.  
  2148.                                        Store
  2149.  
  2150.               This  takes you to the ON-LINE STORE(tm). If  you  don't   
  2151.               intend  to use this, set the access level to  32722  and   
  2152.               don't  list  a command key for it. See  the  section  on   
  2153.               ON-LINE   STORE(tm)  for  details  on  setting  up   and   
  2154.               operating the store.
  2155.  
  2156.          Osiris SE         Technical Reference Manual        Page  17
  2157.  
  2158.                                 Statistics Subsystem
  2159.  
  2160.               You'll find several statistical options located in  this   
  2161.               section. 
  2162.                                      Todays Callers
  2163.  
  2164.                    This  will display a list containing the  names  of   
  2165.                    the people that called your system TODAY. The  list   
  2166.                    contains  the name of the caller, where  he  called   
  2167.                    from,  when he logged on, when he logged  off,  and   
  2168.                    the total time spent on-line.
  2169.  
  2170.                    Callers that have the privacy switch turned on,  no   
  2171.                    user list display, will not be shown but will still   
  2172.                    be counted.
  2173.  
  2174.                    At the end of the list; the total number of  calls,   
  2175.                    total minutes of in-use time, and the percentage of   
  2176.                    utilization,  based on 1440 minutes. 
  2177.                  
  2178.                                   Who Called Yesterday
  2179.  
  2180.                    "Who  called  yesterday"  functions  the  same   as    
  2181.                    "Todays   callers,"  but  shows   only   yesterdays   
  2182.                    callers. 
  2183.                                      Caller History
  2184.  
  2185.                    Caller  history  shows  a screen  listing  all  the   
  2186.                    callers  to  your system for the last 14  days,  if   
  2187.                    available.   I will use a date bar to divides  each   
  2188.                    group of entries.
  2189.  
  2190.                    At  the end of the list; the total number of  calls   
  2191.                    within  that  14 day period, the  total  number  of   
  2192.                    minutes used, and the AVERAGE utilization.
  2193.  
  2194.                    NOTE:  CAT takes care of the HISTORY logs for  each   
  2195.                    node and will automatically keep them trimmed  back   
  2196.                    to  no  more  than 14 days. You don't  have  to  do   
  2197.                    anything. 
  2198.                                  Six Best Times To Call
  2199.  
  2200.                    Uses  the  history  log for  the  current  node  to   
  2201.                    compute  the SIX less used HOURS and displays  them   
  2202.                    in  less to most order. It also shows  the  average   
  2203.                    in-use time for that hour.
  2204.  
  2205.                    This  lets  you  pick the BEST times  to  call  the   
  2206.                    system. 
  2207.  
  2208.  
  2209.  
  2210.  
  2211.          Osiris SE         Technical Reference Manual        Page  18
  2212.  
  2213.                                  Six Worse Times To Call
  2214.  
  2215.                    Does the same as the last display but shows the SIX   
  2216.                    busiest hours when you should NOT attempt to call.
  2217.  
  2218.                                             Quirk
  2219.  
  2220.                         Six  Best and Six Worse times to call  have  a   
  2221.                         small  quirk  that  you  may  notice.  It   is   
  2222.                         possible,  highly probably, that you will  see   
  2223.                         BUSY  HOURS with more then 60  minutes.  Since   
  2224.                         Osiris,  and ISIS for that matter, round  each   
  2225.                         call  up to the next highest minute,  you  may   
  2226.                         get more than 60 minutes in a busy hour.
  2227.  
  2228.                                    Top Ten Uploaders 
  2229.   
  2230.                    There are two different charts displayed under this  
  2231.                    option.  The  first  is top 10  UPLOADERS  to  your  
  2232.                    system,   based on  the  NUMBER OF FILES  uploaded.  
  2233.                    The  second  is top 10 UPLOADERS  to  your  system,  
  2234.                    based on KILO-BYTES uploaded.
  2235.  
  2236.                    Callers  with zero uploads will NOT be  allowed  in   
  2237.                    the chart.   
  2238.                                      Baud Rate Chart
  2239.  
  2240.                    This TRACKS the SPEED of your callers.
  2241.  
  2242.                                     Top Ten Downloads 
  2243.   
  2244.                    A  list  of  the ten most  popular  files  on  your   
  2245.                    system.  It might be helpful to new callers if  you   
  2246.                    have a LOT of files.
  2247.  
  2248.                                      Protocol Graph
  2249.  
  2250.                    This  graph shows which protocols are  popular  and   
  2251.                    which  are  not.  If your callers  aren't  using  a   
  2252.                    particular  protocol,  you may want to  replace  it   
  2253.                    with one they will use.
  2254.  
  2255.                                    Top Ten Dnloaders 
  2256.   
  2257.                    Again,  this option displays two different  charts.  
  2258.                    The  first chart is base  on the NUMBER  OF   FILES   
  2259.                    down  loaded- loaded.  If you  do not have   enough   
  2260.                    dnloaders  to   fill  the  10  slots, the remaining  
  2261.                    slots  will  be   empty.
  2262.  
  2263.                    The  second chart is based on the number  of  KILO- 
  2264.                    BYTES down loaded.
  2265.  
  2266.          Osiris SE         Technical Reference Manual        Page  19
  2267.  
  2268.                                    Track Call History
  2269.  
  2270.                    You can input a name and list the dates, times, and   
  2271.                    amount  of  time a specific person has  called  the   
  2272.                    system.
  2273.  
  2274.                     
  2275.          Osiris SE         Technical Reference Manual        Page  20
  2276.  
  2277.                    This allows the sysop, or the caller, to track  the   
  2278.                    calling habits of individuals.
  2279.  
  2280.                                   Specific History Date
  2281.  
  2282.                    This  is  almost  like the  TODAYS  CALLER  display  
  2283.                    except   you  can  enter the DATE you want to  look   
  2284.                    at.   The   available   dates   will  be  displayed   
  2285.                    before  you're  asked to enter which date you  want  
  2286.                    to look at.
  2287.  
  2288.  
  2289.                                     Track Individual 
  2290.  
  2291.                    This  option  allows  you  to  track  the  times  a  
  2292.                    specific individual called the system.
  2293.  
  2294.                    The  display  shows the name, log-in  date,  log-in  
  2295.                    time, and the time spent on-line for that call.
  2296.  
  2297.                    If you want to track yourself, simply press return.  
  2298.                    If  you  want to track someone else,  backspace  to  
  2299.                    remove your name and type in the name of the person  
  2300.                    you want to track.
  2301.  
  2302.                    I'll only list a person with the privacy switch for  
  2303.                    the sysop OR that person.
  2304.  
  2305.                    After all the dates on-line have been displayed for  
  2306.                    that  person,  I'll give you the  total  number  of  
  2307.                    connects  and  the total time he or she  spent  on- 
  2308.                    line. 
  2309.                                   Total And Avg In-Use
  2310.  
  2311.                    You'll get a display showing the TOTAL calls, TOTAL   
  2312.                    in-use time, the percentage of utilization, average   
  2313.                    callers per day, average in-use timer per day,  and   
  2314.                    the average percentage of utilizations per day.
  2315.  
  2316.                               Top Ten Callers To The System
  2317.  
  2318.                    Lists the names of your ten most frequent  callers.  
  2319.                    Those with the privacy switch are excluded from the  
  2320.                    chart.
  2321.          Osiris SE         Technical Reference Manual        Page  21
  2322.  
  2323.                                  Top Ten Message Posters
  2324.  
  2325.                    Lists  the  top ten people based on the  number  of  
  2326.                    messages  they have posted. Those with the  privacy  
  2327.                    switch are excluded from the chart.
  2328.  
  2329.                                   File Area Statistics
  2330.  
  2331.                    This  chart  lists each file area, those  you  have  
  2332.                    access  to, along with the number of  files,  total  
  2333.                    byte  count, and total number of  files  downloaded  
  2334.                    from the area.
  2335.  
  2336.                    After all the areas have been listed, the  combined  
  2337.                    number of files, bytes, and number of downloads  is  
  2338.                    shown.
  2339.  
  2340.                                Advanced Mailer/Remote Tnt
  2341.  
  2342.                    If  you're  using our advanced mail  system,  ISIS,   
  2343.                    incoming  and outgoing mail sessions will be  added   
  2344.                    to  the history logs so in-use times  will  reflect   
  2345.                    TOTAL in-use time.
  2346.  
  2347.                    All incoming Remote TNT users will be added to  the   
  2348.                    history log. 
  2349.                                 Inter Node Mail Room
  2350.  
  2351.               Takes you to the internode mail room, sometimes referred   
  2352.               to  as CB Chat, where you may send short, up to 5  line,   
  2353.               messages to callers on other nodes.
  2354.  
  2355.               The   HELP  file   for  the  internode  email  room   is   
  2356.               "EMAIL.(ASC/MMU/ANS)" and resides in the text directory.
  2357.  
  2358.               Ctrl-K . Exits Mail Room. 
  2359.               S ...... Send Inter Node Email Message. 
  2360.               L ...... List Who's on which Node. 
  2361.               J ...... Join a SIG. 
  2362.               Q ...... Quit SIG. 
  2363.               W ...... Who's in SIG with You? 
  2364.               A ...... List Available SIG areas. 
  2365.               C ...... Clear Screen Redisplay Command Options. 
  2366.               B ...... Browse through OLD Chatter for This SIG 
  2367.                                        ^----(For the CURRENT day)
  2368.  
  2369.               While  you're in this area, you can wait for pending  E  
  2370.               mail without fear of the in-activity timer throwing  you   
  2371.               off line or you can send Email from here.
  2372.  
  2373.  
  2374.  
  2375.  
  2376.          Osiris SE         Technical Reference Manual        Page  22
  2377.  
  2378.               You don't HAVE to WAIT here for the Email. If you're  at   
  2379.               any   one  of  the  3  MAIN  Osiris  Menus,   you   will   
  2380.               automatically be alerted to any and all arriving E  mail   
  2381.               messages.  Once alerted, the message will  be  displayed   
  2382.               and you'll have the option of replying. If you're not at   
  2383.               one of the primary menus, I'll wait until you reach  one   
  2384.               before breaking in with Email.
  2385.  
  2386.               You  can  send Email to any ACTIVE node on  the  system,   
  2387.               either to a SINGLE node or a GROUP of nodes via the  SIG   
  2388.               function.
  2389.  
  2390.               Inter   Node  Email  also   has  full  function  Special   
  2391.               Interest  Groups often referred to as a SIG.  You  might   
  2392.               think  of a SIG as a special conference ROOM  for  GROUP   
  2393.               conversations. It's  up to  you to install the different   
  2394.               SIG areas using the  SIG option in OSM.
  2395.  
  2396.               You can only belong to one SIG at a time. If you attempt   
  2397.               to  join another, I'll remove you from the current  Sig.   
  2398.               Belonging  to a SIG is the only way you will be  allowed   
  2399.               to  GROUP  send,  send  the  same  message  to  multiple   
  2400.               individuals, and I'll handle the actual sending.
  2401.  
  2402.               If you leave the mail room, the talk got slow, you still   
  2403.               remain  attached  to the SIG and will  automatically  be   
  2404.               notified and shown any messages that come in.
  2405.  
  2406.               I'll log all activity in a SIG, SIGxxx.LOG, and you  can   
  2407.               BROWSE though the old messages, using the B option.  You   
  2408.               also have the option of setting a specific starting time   
  2409.               for the browse.
  2410.  
  2411.               There   can   be  up  to  128   DIFFERENT   Inter   Node   
  2412.               Conversations  going on at the same time. Each node  can   
  2413.               have up to 5000 un-read Email messages waiting.
  2414.  
  2415.               A system may have as many as 32722 different SIG  areas,   
  2416.               more SIG areas than available phone lines I'd wager.
  2417.  
  2418.                             User Defined Functions
  2419.  
  2420.          The remaining 10 functions available from the main menu are:
  2421.  
  2422.          Main1,  Main2,  Main3,  Main4, Main5,  Main6,  Main7,  Main8,   
  2423.          Main9, and Main10.
  2424.  
  2425.          These  are SPL/I command files, baring the same name  as  the   
  2426.          aforementioned  functions.  I  expect you  to  use  SPL/I  to   
  2427.          PROGRAM these files.
  2428.  
  2429.          All  of the Main1 - Main10.(PRG) files should be  located  in   
  2430.          your text support directory. 
  2431.          Osiris SE         Technical Reference Manual        Page  23
  2432.  
  2433.                         Adding Conference Message Areas
  2434.  
  2435.          A  conference  board  is a message  area  defined  for  GROUP   
  2436.          conversations. It can be either a LOCAL area or an ECHO area.   
  2437.          Unlike the "MESSAGE CENTER," I do not allow private  messages   
  2438.          and the conference newmail check is optional. 
  2439.                
  2440.          You  will be required to define each conference message  area   
  2441.          using OSM.
  2442.  
  2443.          Your first step would be to go to an existing board and press   
  2444.          the C)lone key. Now press the END key, located on the  keypad.   
  2445.          You're  now  positioned ON the new message board  and  you're   
  2446.          ready to edit. Press the E)dit key to begin.
  2447.  
  2448.                                      Area Name
  2449.  
  2450.               The first field is the area name. This is a  description   
  2451.               field used to identify the area. 
  2452.  
  2453.               I  don't use this field for anything and it's  for  your   
  2454.               benefit. I use the field "Area Number" for all  internal   
  2455.               and external references. 
  2456.  
  2457.                                  Fragmented Area Numbers
  2458.  
  2459.                    I'll  NOT  adjust  the area  numbers  so  they  are   
  2460.                    contingent.  If  you don't have access or  have  an   
  2461.                    area  selected  you may get a  display  that  shows   
  2462.                    areas 1 3 6 7 9. 
  2463.  
  2464.                    Some smaller BBS programs will auto-adjust the area   
  2465.                    numbers.  But  because of the  possible  areas,  it   
  2466.                    would  require  over  128,000 bytes  of  memory  to   
  2467.                    synchronize the area numbers in Osiris. Simply  not   
  2468.                    worth the additional overhead.
  2469.  
  2470.                                  Area Access Level
  2471.  
  2472.               Your  access level must be equal to or higher than  THIS   
  2473.               access level  before you can get into the area. 
  2474.                
  2475.                                  Area Flag Settings
  2476.  
  2477.               This  allows  you  to sub-divide  the  access  level  by   
  2478.               specifying  specific  flag settings. This  field  has  8   
  2479.               flags and you can use any combination.
  2480.  
  2481.  
  2482.  
  2483.  
  2484.  
  2485.  
  2486.          Osiris SE         Technical Reference Manual        Page  24
  2487.  
  2488.                                   Flags, How They Work
  2489.  
  2490.                    All  command  keys on the Main, Message,  and  File   
  2491.                    Area menus have 16 special access flags that can be   
  2492.                    turned  on,  or  off, in  groups.  File  areas  and   
  2493.                    Conference areas have 8 special access flags.
  2494.  
  2495.                    Each  User record has a special flag field for  the   
  2496.                    command keys.
  2497.  
  2498.                    Each  group of flags offers some  65,535  different   
  2499.                    combinations for 16 flags and 255 with 8 flags.
  2500.  
  2501.                    A set of command key flags will be comprised of  16   
  2502.                    zeros(0)  or one's(1). ,e.g.,  0000000000000000  or   
  2503.                    1100101011110010.
  2504.  
  2505.                    Zero  means the flag is off, one means the flag  is   
  2506.                    on. If you and the command have the same flag(s) ON   
  2507.                    ,  then you have access to that command,  providing   
  2508.                    the ACCESS level itself is ok.
  2509.  
  2510.                    Note  that  I said ON in the last paragraph .  .  .    
  2511.                    only  flags that are ON will be checked and I  only   
  2512.                    looks at the REQUIRED Flags.
  2513.  
  2514.                    100000000000000   may  be  a  flag  for  the   File   
  2515.                    SubSystem  command at the main menu. You must  have   
  2516.                    flag number 1 turned on to access that command.
  2517.  
  2518.                    If your flag field is 1000000000000010, flags 1 and   
  2519.                    15  are  on.   I'll ignore  flag  15  because  that   
  2520.                    command does not require it.
  2521.  
  2522.                                     General Propose Flags
  2523.  
  2524.                         Each  user record also has 16 General  Purpose   
  2525.                         flags for use in SPL/I command files.
  2526.  
  2527.                         16 flags offers 65,535 possible combinations. 
  2528.  
  2529.                         Each user record has a specific flag field for   
  2530.                         these  flags  and  function the  same  as  the   
  2531.                         command key flags. 
  2532.  
  2533.                                           Area Flags
  2534.  
  2535.                         Each File board and each Conference Board have   
  2536.                         a  set  of  8  flags  offering  255  different   
  2537.                         combinations to choose from. 
  2538.                
  2539.                         They  function just like the 16  flags  except   
  2540.                         there are only 8 of them. 
  2541.          Osiris SE         Technical Reference Manual        Page  25
  2542.  
  2543.                                      Board Type
  2544.  
  2545.               This   defines  the  TYPE  of  area;  local,  echo,   or   
  2546.               echo/pass.
  2547.                                           Local 
  2548.                
  2549.                    If  you  define a message board  as  LOCAL,  you're   
  2550.                    telling  me the messages in that area  NEVER  leave   
  2551.                    your system. 
  2552.                                           Echo
  2553.  
  2554.                    If  you  define a message board  as  ECHO,   you're   
  2555.                    telling me the  messages will be removed from  that   
  2556.                    area and sent to someone else's system. 
  2557.  
  2558.                    I will active special flags and other items to give   
  2559.                    external  programs additional support.  The  method   
  2560.                    used to send the messages does not matter. 
  2561.  
  2562.                    I need to make one thing perfectly clear, the  term   
  2563.                    ECHO is generic. It does NOT reference the area  as   
  2564.                    a Fidonet Echo area nor any other specific type  of   
  2565.                    Echo area and I will not place any default "Tear or   
  2566.                    Origin" type lines in ANY message. If you're  going   
  2567.                    to  set up an area that NEEDS those, your  external   
  2568.                    export program will have to supply them.
  2569.  
  2570.                                         Echo/Pass
  2571.  
  2572.                    An  Echo/Pass  board  is the same as  Echo  but,  I   
  2573.                    expect  the external programs to remove all  traces   
  2574.                    of the messages once they've been moved. 
  2575.  
  2576.                                     Message Type
  2577.  
  2578.               The 5th field is the Message TYPE: ASP, REV,  ASP/ALIAS,   
  2579.               and  REV/ALIAS.  When you enter a message,  the  message   
  2580.               TYPE  tells me whether or not to allow you to  use  your   
  2581.               ALIAS  and it also tells me to either post  the  message   
  2582.               right away or to move it to a HOLDING area for review.
  2583.  
  2584.                                            Asp
  2585.  
  2586.                    I  will make message posted in an area  defined  as   
  2587.                    ASP  available  for public viewing as soon  as  you    
  2588.                    save it. Your REAL name will always be used in  the   
  2589.                    message FROM field.
  2590.  
  2591.                                         Asp/Alias
  2592.  
  2593.                    This  is identical to an ASP area except, I'll  let    
  2594.                    you have use your ALIAS.
  2595.  
  2596.          Osiris SE         Technical Reference Manual        Page  26
  2597.  
  2598.                                            Rev
  2599.  
  2600.                    REV   means  do  not post the  message  for  public   
  2601.                    viewing  but move it to a HOLD area so that it  can   
  2602.                    be  reviewed   (REV)  by the  area  moderator.  
  2603.  
  2604.                    The  moderator  has  the option  of   P)osting  the   
  2605.                    message  or R)ejecting the message. If  you  reject   
  2606.                    the  message,  I'll send the message  BACK  to  the    
  2607.                    party   that  wrote  it  with  the  text  body   of    
  2608.                    the   rejection   message  containing   the  entire   
  2609.                    header and text body of the  rejected message. 
  2610.  
  2611.                    You  can't  reply  to Rejection  notices  and   the    
  2612.                    name   used  in  the  FROM  field  will  be   "Area   
  2613.                    Moderator," to protect the moderator's identity.
  2614.  
  2615.                                            Mod.ctl
  2616.  
  2617.                         If you define an area as REV, you  must   also    
  2618.                         create  a MOD.CTL file, in  your  Osiris  root   
  2619.                         directory. 
  2620.  
  2621.                         The Mod.ctl file contains the area number  and   
  2622.                         a  password,  up to 8 characters. This  allows   
  2623.                         you  to  assign  individual   area  moderators   
  2624.                         that can work the system remotely. 
  2625.  
  2626.                                         Rev/Alias
  2627.  
  2628.                    This is the same as REV but, I'll let you use  your   
  2629.                    ALIAS.
  2630.                                     Origin Line
  2631.  
  2632.               The  6th field is "Origin Line." If you define the  area   
  2633.               as ECHO, your external export program may need some type   
  2634.               of  Origin line. Halcyon, one of my programs, does.  The   
  2635.               section  about Halcyon will tell you what the  field  is   
  2636.               for and what/what not to put in it.
  2637.  
  2638.               If  you  don't know or aren't sure when you  DEFINE  the   
  2639.               area, skip the field until you know what you need to put   
  2640.               in it. 
  2641.                                 Full Help Menu Name
  2642.  
  2643.               The  7th field "Full Help Menu Name" is the name of  the   
  2644.               /ASC/MMU/ANS  file  to display when you have  FULL  help   
  2645.               turned on. You can use one menu for ALL area,  different   
  2646.               menus  for each area, or one menu for ALL  areas  EXCEPT   
  2647.               for special areas. 
  2648.  
  2649.  
  2650.  
  2651.          Osiris SE         Technical Reference Manual        Page  27
  2652.  
  2653.                                  Pack Trigger Level 
  2654.           
  2655.               Field  8 is the "Pack Trigger Level" and  CAT  uses  the   
  2656.               field to keep the number of messages in the area below a   
  2657.               specific level or number. 
  2658.  
  2659.               CAT takes the "Pack Trigger Level" and compares it  with   
  2660.               the actual number of messages in the area. If the number   
  2661.               of messages exceeds the "Pack Trigger Level," CAT  trims   
  2662.               the area down to the number of message defined in  field   
  2663.               9. 
  2664.  
  2665.               The "Pack Trigger Level" can be any number ranging  from   
  2666.               1 to 32722. I suggest you keep it high enough so it only   
  2667.               triggers  a  PACK  once  a week to  cut  down  on  drive   
  2668.               fragmentation.
  2669.  
  2670.                                      Pack Level 
  2671.           
  2672.               Field  9, Pack Level. Cat uses this field to  determine   
  2673.               the post pack message level.
  2674.  
  2675.                                      Word Wrap
  2676.  
  2677.               Field  10 "Word Wrap" tells me if HARD CARRIAGE  RETURNS   
  2678.               should or should not be used. 
  2679.  
  2680.               HTMS  echomail,  Fidonet echomail,  and   LOCAL  message   
  2681.               boards require  a YES.
  2682.  
  2683.               You  should ONLY use the NO option if the area is to  be   
  2684.               used  in a network that requires HARD CR's    (Pc  Rely,   
  2685.               UUCP type networks).
  2686.  
  2687.                                      Functions
  2688.  
  2689.               The  remaining  twenty (20) fields  pertain  to  certain   
  2690.               features/options  available to the callers.  All  twenty   
  2691.               fields  have  three  things in  common;  A  command  key   
  2692.               (single  character), an access level (1 - 32722), and  a   
  2693.               set of flags (16 of them).
  2694.  
  2695.               NOTE: I do not currently use ALL 20 fields. If I do  not   
  2696.               use  a field, I will mark the field "OPEN." If  you  run   
  2697.               across  a field marked "OPEN," set the command key to  a   
  2698.               SPACE.
  2699.                                        Area Change
  2700.  
  2701.                    Allows  you  to switch conference areas.  Only  the   
  2702.                    area(s)  you  have selected will be  displayed  and   
  2703.                    areas  containing UNREAD messages will  be  flagged   
  2704.                    with (*). 
  2705.                     
  2706.          Osiris SE         Technical Reference Manual        Page  28
  2707.  
  2708.                    Please  keep  in  mind that  Osiris  is  CONFERENCE   
  2709.                    based.  That  means simply  ADDING  new  conference   
  2710.                    message areas will NOT affect your area display and   
  2711.                    only  areas SELECTED will be displayed. I   suggest   
  2712.                    you  use a system bulletin to notify  your  callers   
  2713.                    about new areas. 
  2714.  
  2715.                                          Log Off
  2716.  
  2717.                    Allows  you  to log off the system with the  option   
  2718.                    of leaving the sysop a parting message.
  2719.  
  2720.                                         New Mail
  2721.  
  2722.                    This  triggers a CONFERENCE mail check  for  UNREAD   
  2723.                    messages  addressed TO you. There is also a  log-on   
  2724.                    OPTION,  can be turn on from the change menu,  that   
  2725.                    will  automatically  scan for NEW  CONFERENCE  mail   
  2726.                    each  time you log-on. The LOG-ON Conference  check   
  2727.                    will also display a list of areas that HAVE  unread   
  2728.                    conference mail.
  2729.  
  2730.                    Only  areas you have selected will be  scanned  and   
  2731.                    only  unread  messages  addressed to  you  will  be   
  2732.                    shown. You have the option of reading and  replying   
  2733.                    to  any new message displayed and you can quite  at   
  2734.                    any time. 
  2735.  
  2736.                    The conference new mail check is exceptionally fast   
  2737.                    and can scan at roughly 15,000 messages per second.
  2738.  
  2739.                                           Enter
  2740.  
  2741.                    Allows  you to enter a message. If you defined  the   
  2742.                    area  as a LOCAL message board, then you  can  ONLY   
  2743.                    enter a message to someone on the system or address   
  2744.                    the  message  to ALL. If you defined  the  area  as   
  2745.                    ECHO, you may address the message to anyone.
  2746.  
  2747.                    Any  message  entered  in a CONFERENCE  area  is  a   
  2748.                    PUBLIC message and anyone may read or reply to  the   
  2749.                    message.
  2750.  
  2751.                                           Main
  2752.  
  2753.                    Takes you back to the main menu.
  2754.  
  2755.                    If you entered the Conference message area from  an   
  2756.                    SPL/I  command file, you'll exit back to the  SPL/I   
  2757.                    command file and NOT the main menu.
  2758.  
  2759.  
  2760.  
  2761.          Osiris SE         Technical Reference Manual        Page  29
  2762.  
  2763.                                          Confer.
  2764.  
  2765.                    This  takes  you  to the  conference  message  area   
  2766.                    selection system where you can add, remove, or view   
  2767.                    the areas you want to read.
  2768.  
  2769.                    You can select  up to 49 message areas to read. 
  2770.  
  2771.                    Commands (Hard Coded and May NOT be changed)
  2772.  
  2773.                    A)dd an Area 
  2774.                    L)ist  out  all  Available areas (those  you   have   
  2775.                    access to). 
  2776.                    D)elete an area out of your personal list. 
  2777.                    M) List out the areas you have already selected.
  2778.  
  2779.                    "SETBOARD./ASC/MMU/ANS"  is the FULL   screen  help    
  2780.                    menu  for the  conference selection subsystem  
  2781.  
  2782.                                           Text
  2783.  
  2784.                    Displays the Text file ####./ASC/MMU/ANS.  ####  is   
  2785.                    the area number for that message area.
  2786.  
  2787.                    The   file  can  contain  anything  from  a   brief   
  2788.                    explanation of the area to calling a complex  SPL/I   
  2789.                    command file.
  2790.  
  2791.                    The design and make-up of this file is up to you.
  2792.  
  2793.                                          Gateway
  2794.  
  2795.                    Displays  the  Text file  GATE_M.ASC/MMU/ANS.  
  2796.  
  2797.                                           Pack
  2798.  
  2799.                    Pack  lets  you to place un-read  messages  from  a   
  2800.                    single  message  area or ALL areas in  an  archive,   
  2801.                    optional, and download it for off line reading.
  2802.  
  2803.                    You have the following options.
  2804.  
  2805.                    1. Starting message number. Pressing  RETURN starts   
  2806.                    with the CURRENT message.
  2807.  
  2808.                    2.  The maximum number of messages to  pack.  Press   
  2809.                    RETURN  for up TO 500 messages, about 500,000 bytes   
  2810.                    for a NON archived text file.
  2811.  
  2812.                    3.  Type of archive. Zoo, Lharc, PAK, Zip, ARC,  or   
  2813.                    NO archiving.
  2814.  
  2815.  
  2816.          Osiris SE         Technical Reference Manual        Page  30
  2817.  
  2818.                    Lharc  uses Lharc, Zip uses Pkzip, Arc uses  pkarc,   
  2819.                    and Pak uses PAK, and Zoo uses Zoo.exe.
  2820.  
  2821.                    I  do not, currently, support ARJ because the  slow   
  2822.                    compression time offsets the time savings. When Mr.   
  2823.                    Jung  releases  ARJX,  a  faster  version  of  ARJ,   
  2824.                    support will be added to the PACK function.
  2825.  
  2826.                    If  the  download went OK, you have the  option  of   
  2827.                    having the LAST READ marker set to the last message   
  2828.                    PACKED for the area(s).
  2829.  
  2830.                    Since the TEXT file is in generic ASCII format,  it   
  2831.                    doesn't require special READER software and can  be   
  2832.                    used by anyone.
  2833.  
  2834.                                         Bug? . . . No
  2835.  
  2836.                         The  following often leads to  some  confusion   
  2837.                         and   does  generate  more   "bug.frms"   than   
  2838.                         anything else.
  2839.  
  2840.                         There   is  only  ONE  download,  send   file,   
  2841.                         function   in  Osiris.  All  internal   Osiris   
  2842.                         functions  have to go though this function  to   
  2843.                         send files to the caller.
  2844.  
  2845.                         The  send  file  function  displays  a  prompt   
  2846.                         telling  you to press S to start, A to  abort,   
  2847.                         or G for goodbye after transfer.
  2848.  
  2849.                         Only  S and A are valid and G will be  treated   
  2850.                         the same as S, START.
  2851.  
  2852.                                        File Areas 
  2853.   
  2854.                    Takes you directly to the Files Areas.  It's useful   
  2855.                    for those  with elaborate  ANSI Main  Menus. 
  2856.  
  2857.                                      Message Center
  2858.  
  2859.                    This  option accesses the MESSAGE CENTER  from  the   
  2860.                    Conference message area. 
  2861.  
  2862.                                    [R]ead Command
  2863.  
  2864.                    Takes  you  to the READ messages  system  for  that   
  2865.                    area. From here the options will be displayed by an   
  2866.                    internal menu system.
  2867.  
  2868.  
  2869.  
  2870.  
  2871.          Osiris SE         Technical Reference Manual        Page  31
  2872.  
  2873.  
  2874.    Msg 1 [1....1027] [R]eply, [M]ask, [H]elp, [D]isplay Current, [Q]uit,  
  2875.    [-]Reverse Direction, [I]ndividual, [E]nter, [T]hread, [G]oto Last Read,  
  2876.    [ENTER] for Next Message:
  2877.                                   Items that were  moved   
  2878.                                   to  the read  menu  or   
  2879.                                   obsolete by the   Mask   
  2880.                                   Sub  System have  been   
  2881.                                   left empty for  future   
  2882.                                   expansion. 
  2883.   
  2884.                                   Those    fields   are   
  2885.                                   marked  as  OPEN   in   
  2886.                                   OSM.  You should  set    
  2887.                                   them  to   SOMETHING,    
  2888.                                   a   key  you're   not   
  2889.                                   using for one of  the    
  2890.                                   other  commands.   Do   
  2891.                                   NOT  leave the fields  
  2892.                                   blank.
  2893.  
  2894.                                             [M]ask
  2895.  
  2896.                         The   MASK  Menu  allows you  to  set  message   
  2897.                         FILTERS  and  toggle the TRACKING of the  LAST   
  2898.                         message read on and off.
  2899.  
  2900.                         If   a   message   doesn't   MEET   the   MASK   
  2901.                         requirements, I'll skip it and go to the  next   
  2902.                         message  until I find one that DOES match,  or   
  2903.                         until I reach the LAST message in the area. 
  2904.   
  2905.   
  2906.                                              [T]o
  2907.  
  2908.                         This  sets  the  MASK so  that  ONLY  messages   
  2909.                         addressed  TO a  specific individual  will  be   
  2910.                         display.  
  2911.                     
  2912.                         When  you select this option, I'll ask you  to   
  2913.                         enter  a persons name. I'll DISPLAY YOUR  name   
  2914.                         and  if  you  want to use  it,  press  RETURN.   
  2915.                         Otherwise  use the DEL key to erase your  name   
  2916.                         and type in the name you'd rather use.
  2917.  
  2918.  
  2919.  
  2920.  
  2921.  
  2922.  
  2923.  
  2924.  
  2925.  
  2926.          Osiris SE         Technical Reference Manual        Page  32
  2927.  
  2928.                                             [F]rom
  2929.  
  2930.                         This  works like the TO mask  but  works  with   
  2931.                         the  FROM  field.  Only  messages  FROM   that   
  2932.                         individual  will be displayed.
  2933.  
  2934.                         When  you select this option, I'll ask you  to   
  2935.                         enter  a persons name. I'll DISPLAY YOUR  name   
  2936.                         and  if  you  want to use  it,  press  RETURN.   
  2937.                         Otherwise  use the DEL key to erase your  name   
  2938.                         and type in the name you'd rather use. 
  2939.   
  2940.                                             [A]ll
  2941.  
  2942.                         This resets the MASK to the default value  and   
  2943.                         I'll show ALL messages. 
  2944.   
  2945.                                           [P]attern
  2946.  
  2947.                         This is a VERY powerful function and one  that   
  2948.                         I  find  to  be very useful. When you   select    
  2949.                         this   option,  I'll ask you to enter  a  text   
  2950.                         string.   This   can   contain  ANYTHING  that   
  2951.                         might  be  found  in  a  messages  TO,   FROM,   
  2952.                         SUBJECT, or DATE field. 
  2953.   
  2954.                         Unlike   the TO and FROM masks, which  require    
  2955.                         a   perfect  match,  the  PATTERN  mask   only   
  2956.                         requires that the pattern be  IN the  field(s)   
  2957.                         SOME PLACE. 
  2958.   
  2959.                         Suppose you entered "John" as the PATTERN. 
  2960.                         Msg  #2, From Field, has "John Doe."  Msg  #5,   
  2961.                         SUBJECT field, has "RE: John Deer Tractors." 
  2962.   
  2963.                         The  pattern  would match BOTH messages  since    
  2964.                         both  messages have the word JOHN in it. 
  2965.   
  2966.                         You   can   also use this on DATE  fields  and   
  2967.                         display  message  posted in a specific  month,   
  2968.                         on  a  specific date, even at a specific TIME. 
  2969.   
  2970.                         Keep  in  mind  that message  dates  have  the   
  2971.                         format of DD MMM YY  HH:MM:SS 
  2972.   
  2973.                         DD   is always TWO digits. If the day is  less   
  2974.                         than  10   (1,2,9)  it will always  have  a  0   
  2975.                         before it. 
  2976.   
  2977.                         MMM  is months and all months are 3 characters   
  2978.                         long  followed by a blank space. 
  2979.  
  2980.  
  2981.          Osiris SE         Technical Reference Manual        Page  33
  2982.  
  2983.                                          [L]ast Read
  2984.  
  2985.                         Gives you the option of turning the LAST  read   
  2986.                         TRACKING system OFF and ON. 
  2987.   
  2988.                         If   you   do set one of the mask  options  to    
  2989.                         SEARCH   for something, you MAY want  to  turn   
  2990.                         tracking  OFF  so  you cam jump  BACK  to  the   
  2991.                         original  message without having  to  remember   
  2992.                         it. 
  2993.   
  2994.                         If you have toggled LAST read Tracking OFF and   
  2995.                         you  are  going to  be toggling it BACK on,  I   
  2996.                         would  advise  you to jump back to   the  last   
  2997.                         read  position,  (G) option from  READ   menu,    
  2998.                         before doing so. 
  2999.   
  3000.                                Searching For Specific Messages 
  3001.   
  3002.                         If  you're  going  to SEARCH  for  a  specific   
  3003.                         message or group of messages. 
  3004.   
  3005.                         1. Turn Tracking OFF.  
  3006.                         2.  Jump to message number 1 (I  command  from   
  3007.                             READ menu)  
  3008.                         3. Set Mask.  
  3009.                         4. Exit Mask Menu.  
  3010.                         5. Press RETURN.
  3011.  
  3012.                         When you have completed the search . . .  
  3013.   
  3014.                         1. Turn Tracking ON  
  3015.                         2. Set Mask to ALL  
  3016.                         3. Jump to Last Read (using [G]oto Last  Read       
  3017.                             command) 
  3018.                                            [T]hread
  3019.  
  3020.                         If the message is THREADED, has replies or  is    
  3021.                         a reply  to another message, you can go to the   
  3022.                         THREAD   system  and follow  the  conversation   
  3023.                         threads.
  3024.  
  3025.                         From the THREAD menu you have. 
  3026.   
  3027.                         Msg  274  [1...399] [R]eply,     
  3028.                         [-]  Reverse Thread Direction, e[X]it  Thread,    
  3029.                         [ENTER] for Next Message: 
  3030.   
  3031.                         I  will  save your  CURRENT  message  location   
  3032.                         BEFORE  you  enter the THREAD  system   and  I   
  3033.                         will return you to that message when you  EXIT   
  3034.                         the thread system.
  3035.  
  3036.          Osiris SE         Technical Reference Manual        Page  34
  3037.  
  3038.                                     Default.msg
  3039.  
  3040.               With  new callers,  you MUST ASSIGN  default  conference   
  3041.               areas.  You do this  by building a  text  file in   your    
  3042.               Osiris root directory.
  3043.  
  3044.               To  assign  the default  message  areas, create  a  file   
  3045.               called "DEFAULT.MSG." 
  3046.   
  3047.                                The format of this file is:
  3048.  
  3049.   
  3050.                                          Area #  
  3051.                                          Area #
  3052.  
  3053.               A single area number, one per line, with a maximum of 49   
  3054.               areas per file.  The FIRST area you have listed will  be   
  3055.               used as the "Default" area and that's where new  callers   
  3056.               will be placed  the first time  they go to the   message   
  3057.               system.
  3058.  
  3059.                                 Example Default.msg File 
  3060.   
  3061.                                             1  
  3062.                                             2  
  3063.                                             4  
  3064.                                             5  
  3065.   
  3066.                    This  will  give  the callers   default  access  to    
  3067.                    message conference areas 1 through 5.
  3068.  
  3069.   
  3070.                                   Final Step
  3071.  
  3072.               Once you have defined a new conference message area, one   
  3073.               final step must be taken before you can access the  area   
  3074.               from within Osiris.
  3075.  
  3076.               Although  you  have  defined  the  area,  the   physical   
  3077.               databases  must now be created and only CAT.EXE  can  do   
  3078.               that.
  3079.  
  3080.               Exit  the OSM program and from the DOS command line  run   
  3081.               the  CAT.EXE program. CAT doesn't require  command  line   
  3082.               parameters  but you may want to LOOK at the  CAT.CFG  to   
  3083.               see if you want any of the options changed.
  3084.  
  3085.  
  3086.  
  3087.  
  3088.  
  3089.  
  3090.  
  3091.          Osiris SE         Technical Reference Manual        Page  35
  3092.  
  3093.                                      Matrix(?)
  3094.  
  3095.               Since  most  sysops, 95 percent, do not allow  users  to   
  3096.               send  Matrix  mail,  I  did  not  build  a  matrix  type   
  3097.               conference board into Osiris.
  3098.  
  3099.               I  do  have  two stand alone  modules  that  gives  your   
  3100.               callers DIRECT access to your mailers matrix area.  They   
  3101.               can  be  accessed from any place on the  system  via  an   
  3102.               SPL/I command file.
  3103.  
  3104.               It is up to you to decide if you want to provide  matrix   
  3105.               mail  and to pick out which of the matrix modules  suits   
  3106.               your needs. 
  3107.  
  3108.               Imaxtrix.exe: Gives you direct access to the ISIS matrix   
  3109.               area.
  3110.  
  3111.               MMSG.EXE:  Gives you direct access to the mailer  matrix   
  3112.               area in Binkley, Frontdoor, D'bridge, and others.
  3113.  
  3114.                                      Osage 
  3115.                       
  3116.          Osage   is  the Osiris ANSI message editor. To use   it,  you   
  3117.          must  support  ANSI Graphics and your terminal  program  must   
  3118.          support  control  keys. Most do, but there are some  that  do   
  3119.          not.
  3120.  
  3121.          Osage  also has DEC VT102 support for left, right,  up,  down   
  3122.          arrow  keys  as well as home, end, and ctrl-Home.  All  other   
  3123.          commands are Wordstar Compatible to lower the Learning curve.
  3124.  
  3125.          A quick run down of available commands:
  3126.  
  3127.          ^E up line                             ^N split the line 
  3128.          ^I TAB (10 Spaces)                     ^K? Dictionary 
  3129.          ^X down line                           ^V insert space 
  3130.          ^S character left                      ^Ky delete line 
  3131.          ^D character right                     ^Ki insert line 
  3132.          ^A word left                           ^Kx del to end of line 
  3133.          ^F word right                          ^G Del Current Char 
  3134.          ^Qd end of line                         Backspace Delete 
  3135.          ^Qs start of line                      ^R page UP 
  3136.          ^C page DOWN                           ^B  reformat 
  3137.          ^Kr redraw screen                      ^Qc Bottom of Msg 
  3138.          ^Kd Done/Exit Editor                   ^QR Top of Msg 
  3139.          ^Kq Quote text
  3140.  
  3141.  
  3142.  
  3143.  
  3144.  
  3145.  
  3146.          Osiris SE         Technical Reference Manual        Page  36
  3147.  
  3148.                          Ascii Uploading Into Messages
  3149.  
  3150.          I'll  also  allow you to UPLOAD your  message   using   ASCII   
  3151.          uploads. 
  3152.  
  3153.          After  you have entered the subject,  I'll ask if you'd  like    
  3154.          to   upload using ASCII, press Y if you do. I'll then ask  if   
  3155.          you want the text ECHOED as you  upload.  Normally you  would   
  3156.          answer NO  to  this  one. Having the  characters echoed  back   
  3157.          to  you  MAY  mess  up  the protocol driver, if  that's  what   
  3158.          you're using. 
  3159.  
  3160.          To signal the end of the ASCII upload, you will need to press    
  3161.          Ctrl-X. 
  3162.  
  3163.          After  you finish the upload and have pressed Ctrl-X,  you'll   
  3164.          have the option of reviewing what you have uploaded. Be  fore   
  3165.          warned, this review option does NOT have word wrap and a word   
  3166.          may be broken in half.
  3167.  
  3168.          If  the text looks ok, not counting any broken words  on  the   
  3169.          edge of the screen, then answer Yes to the next prompt. 
  3170.  
  3171.          If  the  text did NOT look ok, maybe line noise got  in   the    
  3172.          way,  then  answer No. If you DO answer no, you'll  have  the    
  3173.          option of resubmitting the text file.                    
  3174.  
  3175.                                      Rules
  3176.  
  3177.               There are several rules governing the make-up of the    
  3178.               text file you will be submitting. 
  3179.  
  3180.               1. It must be in ASCII format. 
  3181.               2. You may NOT use any high bit or graphic  characters,    
  3182.                  those  over  ASCII 127. Illegal  characters  will  be      
  3183.                  ignored. 
  3184.               3. ANSI graphics will simply not be allowed. 
  3185.               4. The file may not be larger than 10K.
  3186.  
  3187.                                Hard Carriage Returns
  3188.  
  3189.               I'll store the messages in one long string and only  use   
  3190.               Hard Carriage Returns to signal paragraph changes.  Most     
  3191.               word   or text  processors will end each  line  with   a    
  3192.               Hard  Carriage  Return.  That means I  have  no  way  of   
  3193.               knowing if you REALLY wanted a carriage return or if  it   
  3194.               was just the text editor.
  3195.  
  3196.               For a hard carriage return to be  retained,  there  must   
  3197.               be two in a row.
  3198.  
  3199.  
  3200.  
  3201.          Osiris SE         Technical Reference Manual        Page  37
  3202.  
  3203.               For  the  following examples, I will use <CR>  to  imply    
  3204.               hard carriage returns.
  3205.  
  3206.               Hello all<CR> 
  3207.               I'm calling<CR> 
  3208.               to see if I<CR> 
  3209.               have any messages<CR> 
  3210.           
  3211.               I would format the message as:
  3212.  
  3213.               Hello all I'm calling to see if I have any messages.
  3214.  
  3215.               To  place  a BLANK line in a message,  you   will   need   
  3216.               THREE <CR>'s in a row.
  3217.  
  3218.               Example:
  3219.  
  3220.                        Hello all<CR> 
  3221.                        <CR> 
  3222.                        <CR> 
  3223.                        I'm calling to see . . .  
  3224.           
  3225.               I would format it as:
  3226.  
  3227.               Hello all
  3228.  
  3229.               I'm calling to see.
  3230.  
  3231.               To make COLUMN listings, the same rule applies. 
  3232.  
  3233.               Example:
  3234.  
  3235.               Apples<CR> 
  3236.               <CR> 
  3237.               Guns<CR> 
  3238.               <CR> 
  3239.               MICE<CR> 
  3240.               <CR> 
  3241.           
  3242.               I would format it as: 
  3243.           
  3244.               Apples 
  3245.               Guns 
  3246.               Mice
  3247.  
  3248.  
  3249.  
  3250.  
  3251.  
  3252.  
  3253.  
  3254.  
  3255.  
  3256.          Osiris SE         Technical Reference Manual        Page  38
  3257.  
  3258.                                   Line Editor
  3259.  
  3260.          For those that don't want to use OSAGE or UPLOAD the message,   
  3261.          you have the LINE editor. 
  3262.  
  3263.          It  allows you to edit existing lines, insert  lines,  delete   
  3264.          lines,  continue to add to message, list the  message,  abort   
  3265.          the message, and even do QUOTED replies.
  3266.  
  3267.          Yes, QUOTED replies! 
  3268.   
  3269.          A  QUOTED  reply is where you REPLY to a message  and  IMPORT   
  3270.          sections  of original message so the other person  will  KNOW   
  3271.          what you're referring to.
  3272.  
  3273.          The  LINE editor will allow up to 150 Lines of text,  roughly   
  3274.          12K. 
  3275.  
  3276.                     Message Handling Or Message Base Format
  3277.  
  3278.          There are TWO popular methods of handling message bases. 
  3279.  
  3280.                                     Fido  Style
  3281.  
  3282.               The  Fido  style message, commonly referred  to  as  MSG   
  3283.               format, consists of an individual message PER File.  The   
  3284.               MSG  format is a popular storage method because  of  the   
  3285.               safety factor. 
  3286.  
  3287.               The Fido style message system has two major draw  backs.   
  3288.               It's  slower  than molasses in the winter and  takes  an   
  3289.               ungodly amount of disk space.
  3290.  
  3291.                                        Hudson
  3292.  
  3293.               The HUDSON style message base, made popular by QuickBBS,   
  3294.               uses  ONE BIG file to hold all the messages. That  means   
  3295.               it's  fast  and doesn't take up much  disk  space.  That   
  3296.               addresses the two major problems the FIDO style  message   
  3297.               bases  had.  But, the HUDSON message base  is  prone  to   
  3298.               accidents  like cross linked clusters, mangled  echomail   
  3299.               messages,  bad  sectors, etc. IF  ANYTHING  goes  wrong,   
  3300.               you've lost it ALL.
  3301.  
  3302.               Osiris originally used a message base system almost like   
  3303.               the HUDSON system. But, I found after several years that   
  3304.               the  message  base failure rate was just too high.
  3305.  
  3306.  
  3307.  
  3308.  
  3309.  
  3310.  
  3311.          Osiris SE         Technical Reference Manual        Page  39
  3312.  
  3313.                                      The Answer
  3314.  
  3315.               The  answer  to the HUDSON verses FIDO  problem  was  to   
  3316.               combine  the two methods to form a 3rd type  of  message   
  3317.               base.  One that's fast,  didn't  take much  disk  space,   
  3318.               and  wasn't prone to accidents like the  HUDSON  message   
  3319.               system. 
  3320.  
  3321.               The   message  handling  method  is  unique,   extremely   
  3322.               efficient,  and  very fast.   I use two files  to  store   
  3323.               the messages for each area. One is a HEADER file  called   
  3324.               HDRxxx.SYS,  with   xxx,  replace  xxx  with   the  area   
  3325.               number, and the other is  TXTxxx.SYS.
  3326.  
  3327.                            e.g., HDR1.SYS and TXT1.SYS
  3328.  
  3329.               In  fact, the method of handling messages has proven  to   
  3330.               be so effective, that within the last few years, several   
  3331.               brand-X  BBS',  Maximus'  Squash  for  instances,   have   
  3332.               adopted our method. 
  3333.  
  3334.               The   HDRxxx.SYS  files  contain  the   message   Header   
  3335.               information  such  as:  who  wrote  the   message,   the   
  3336.               subject, and several other important pieces of data.
  3337.  
  3338.               The  TXTxxx.SYS  files contain  the  actual text for the   
  3339.               messages in that area.
  3340.  
  3341.               Your HDRxxx.SYS and TXTxxx.SYS  files can go anywhere as    
  3342.               long  as you set the environment variable TXT=, in  your   
  3343.               AUTOEXEC.BAT file, to point to them.
  3344.  
  3345.               You  can  also SPLIT the HDRxx.SYS and  TXTxxx.sys  onto   
  3346.               separate  drives or into separate directories by  moving   
  3347.               the   HDRxxx.SYS   files  and  defining  HDR=   in   the   
  3348.               environment.
  3349.  
  3350.               Multiple  Database structures, like  the  HDR/TXTxxx.SYS   
  3351.               files,  offer all the advantages of the SINGLE  database   
  3352.               structure,  but offer addition advantages of  safety  as   
  3353.               well as the ability to use multiple drives.
  3354.  
  3355.               Should  something happen, you only lose a small part  of   
  3356.               your message base instead of the whole thing.
  3357.  
  3358.                             Fidonet Style Echomail
  3359.  
  3360.          Although Osiris doesn't directly support echomail, I do  have   
  3361.          a set of echomail programs specifically FOR Osiris, Halcyon.
  3362.  
  3363.  
  3364.  
  3365.  
  3366.          Osiris SE         Technical Reference Manual        Page  40
  3367.  
  3368.          Halcyon is a TWO phase Conference mail processor. It  imports  
  3369.          and dup checks on one pass and then exports on the 2nd  pass.  
  3370.          Halcyon uses two programs to do this, Import and Export. 
  3371.   
  3372.          By  using a TWO phase processor we take advantage of  loading   
  3373.          data   into  memory only twice. We avoid the  pit  falls   of    
  3374.          SINGLE phase  processors, Qmail and QuickBBS, by avoiding the    
  3375.          creation    of   FRAGMENTED  outbound   bundles.   Fragmented   
  3376.          bundles increase  import  time  for those receiving  echomail   
  3377.          from you. 
  3378.   
  3379.                                        Export 
  3380.   
  3381.               Export    takes    messages  out  of  your    conference    
  3382.               message area  and moves them into archive bundles  ready   
  3383.               to be  mailed out to other systems. 
  3384.   
  3385.                                     Command Line 
  3386.   
  3387.   Export {*L *U /X /O} {/S /R /N} /AZone:Net/Node /CControl_file {/F, /M} 
  3388.   
  3389.                                      where 
  3390.   
  3391.               /S  . . . Standard  Scan. Retains ALL of  the  original    
  3392.               paths  and seen by lines. 
  3393.   
  3394.               /R  . . . REMOVE all Un-moved echo flags. 
  3395.   
  3396.               /N  . . . Delete all path statements and seen by  lines.    
  3397.               Should ONLY be used if Gating to a different network. 
  3398.   
  3399.               /F  . . . Don't reset  high-water  markers   nor   mark   
  3400.               messages  as scanned out. 
  3401.   
  3402.               /M  . . . Maximum  number of messages to  export  during    
  3403.               the  run.  Default  is  32700 but can  be  changed  with    
  3404.               this  switch. 
  3405.   
  3406.               /A  . . . You address in Zone:Net/Node format. 
  3407.   
  3408.               /X  . . . Running  in HTMSnet, uses a slightly  different    
  3409.               Origin  line  more appropriate  for  HTMSnet  Conference   
  3410.               mail. 
  3411.   
  3412.               /O  . . . Use  old  style conference  mail  naming.  Some     
  3413.               Older  echo processors use a restricted echomail  naming   
  3414.               system.
  3415.  
  3416.               If  you're  sending  echomail to one of  these  systems,    
  3417.               not likely, then you may need to use this. 
  3418.  
  3419.  
  3420.  
  3421.          Osiris SE         Technical Reference Manual        Page  41
  3422.  
  3423.               /C filename . . . Filename  of the control file to use. 
  3424.   
  3425.               /? . . . Check and see if  enough  file  handles  are   
  3426.               available for the number of systems you want to send to.  
  3427.  
  3428.               Export MUST  be run from your TXT=  directory. It   will   
  3429.               go to your  system files to find all control files, even   
  3430.               the ones you have defined on the command line. 
  3431.   
  3432.                        Setting Up Export.ctl For Outbound Echomail 
  3433.   
  3434.                    Building  your export.ctl file is the  first  step.   
  3435.                    This  file   will  be used  as  the   primary  echo     
  3436.                    control file  by EXPORT. 
  3437.   
  3438.                    NOTE: You may chose any name for this file that you   
  3439.                    like. 
  3440.                                          Support Path 
  3441.   
  3442.                         The     first  line of your EXPORT.CTL    file     
  3443.                         should say SUPPORT PATH
  3444.  
  3445.                         You  have to obtain an echo link from someone.    
  3446.                         Assuming  you have done this, make sure you do   
  3447.                         not  LINK  to anyone else  for the  same  echo   
  3448.                         area.  This is vital! 
  3449.   
  3450.                         You     can    PROVIDE    links   to     other     
  3451.                         people     with    the  understanding     that     
  3452.                         they    do not  get   the   echo  from  anyone   
  3453.                         else. 
  3454.   
  3455.                         Assume   you  have   a  link to  an   echomail    
  3456.                         area   called "IBM."  First, you  have to  add   
  3457.                         a  message board to OSIRIS to HOLD  the    IBM   
  3458.                         echomail messages.    Do  this  with OSM   and    
  3459.                         define  the  area  as  Echo.  
  3460.  
  3461.                         Write down the area number, the one  displayed   
  3462.                         when you do an AREA change from within Osiris,   
  3463.                         for that message area. 
  3464.  
  3465.                                          Add Listing 
  3466.   
  3467.                         Add    a    line   in  your   EXPORT.CTL  file     
  3468.                         for   the   IBM echomail. 
  3469.   
  3470.                         Go   to  the  end of the file.  If  it's  your    
  3471.                         first   one, the line following  the  "SUPPORT   
  3472.                         PATH" line. 
  3473.  
  3474.  
  3475.  
  3476.          Osiris SE         Technical Reference Manual        Page  42
  3477.  
  3478.  
  3479.                         The  first  item   on the  line will be    the    
  3480.                         area   number. Let's use area number 22.  Your    
  3481.                         file  should now look like this:
  3482.  
  3483.                         SUPPORT PATH 22 
  3484.   
  3485.                                        Enter Area Name 
  3486.   
  3487.                         Enter the  NAME of the  echomail area.  It  is    
  3488.                         critical   that you use  the LEGAL   name  for   
  3489.                         that echo.
  3490.  
  3491.                         It  is IBM for the purposes of  this  example.      
  3492.                         Place   ONE space  following the area   number    
  3493.                         and enter the echo NAME.
  3494.  
  3495.   
  3496.                               SUPPORT PATH  
  3497.                               22 IBM
  3498.  
  3499.                         PLEASE  NOTE:    the  ONE SPACE  is  critical,   
  3500.                         it   saves considerable time when exporting.
  3501.  
  3502.                                   Determine Archiving Method 
  3503.   
  3504.                         Find  out, from the person you're getting  the   
  3505.                         area from, what archive type  he uses. This is   
  3506.                         a critical item and should  not be assumed. 
  3507.   
  3508.                         EXPORT can use ARJ, PKZIP, LHARC, ZOO, and ARC   
  3509.                         formats. 
  3510.   
  3511.                         I  use  the  Letters L, O, Z, A,  and  J    to     
  3512.                         tell  EXPORT  what  to  use for  a  particular  
  3513.                         system. 
  3514.  
  3515.  
  3516.                         The letters are: 
  3517.   
  3518.                               L    for Lharc  
  3519.                               O    for Zoo  
  3520.                               Z    for Pkzip  
  3521.                               A    for Arc  
  3522.                               J    for ARJ
  3523.  
  3524.                         The    archive   programs  used    to    place     
  3525.                         the  messages   in  the   above  formats   are    
  3526.                         PKZIP.EXE,    ZOO.EXE, ARJ.EXE,  LHARC.COM/EXE   
  3527.                         and PKARC.EXE. 
  3528.  
  3529.  
  3530.  
  3531.          Osiris SE         Technical Reference Manual        Page  43
  3532.  
  3533.                         They must be in  the current   directory    OR    
  3534.                         in   a   directory  that's  PATHED.   See  DOS   
  3535.                         reference  manual  for  an explanation on PATH   
  3536.                         statements. 
  3537.                    
  3538.                                      Get Network Address
  3539.  
  3540.                         Get,  from  the system your getting  the  echo   
  3541.                         from,  the network address he is uses when  he   
  3542.                         exports. You  MUST  list  the full address  in    
  3543.                         ZONE:NET/NODE    format.  Assuming   you   are   
  3544.                         getting  it from  Zone 1, Net 230, Node   300,   
  3545.                         the correct EXPORT.CTL format would be: 
  3546.   
  3547.                                         1:230/300
  3548.  
  3549.                         PLEASE    NOTE:     There  is  a   colon   (:)    
  3550.                         following  the   zone  and the    net   number    
  3551.                         and  a forward  slash  between the net and the   
  3552.                         node number. 
  3553.   
  3554.                                       Determine Priority 
  3555.   
  3556.                         The    PRIORITY,   Flag  Settings,   of    the     
  3557.                         outgoing  file-attached message, used to  send   
  3558.                         the archived echomail, must be defined. 
  3559.   
  3560.                         In  general, Fidonet  mailers  support  CRASH,    
  3561.                         HOLD,   and NORMAL priority. 
  3562.   
  3563.                         HOLD  means   your mailer  will not  place  an    
  3564.                         outbound  call to drop the mail off. 
  3565.   
  3566.                         CRASH  means  it  will  send  it  as  soon  as   
  3567.                         possible. 
  3568.   
  3569.                         NORMAL  means  to   let  your  Mailers   Event   
  3570.                         Manager   decide  when it can  be  sent,  this   
  3571.                         is the recommended option. 
  3572.   
  3573.                         HTMS mailers, Isis, supports CRASH and  NORMAL   
  3574.                         flags. Hold  is not directly supported because   
  3575.                         of the reverse nature of  HTMS over  FIDO.  
  3576.  
  3577.                         ISIS  uses something that's is far  "STRONGER"   
  3578.                         than a simple HOLD flag. NOD or NOT ON MY DIME    
  3579.                         meaning   this file or message will  never  be   
  3580.                         sent if you're the one making the call. IF you   
  3581.                         tell Halcyon that you're using ISIS and to use    
  3582.                         HOLD  on  an echomail attach, it will use  the   
  3583.                         NOD flag.
  3584.  
  3585.  
  3586.          Osiris SE         Technical Reference Manual        Page  44
  3587.  
  3588.   
  3589.                         I   use   three  letters to  indicate  message   
  3590.                         priority;  C  for crash, N for  normal, and  H   
  3591.                         for  hold.  
  3592.  
  3593.                         For  this   example  we   will  assume  NORMAL   
  3594.                         priority.
  3595.  
  3596.                         Putting  the steps  together and assuming  ARC    
  3597.                         formatted archives. 
  3598.   
  3599.                               SUPPORT PATH  
  3600.                               22 IBM AN1:230/300
  3601.  
  3602.   
  3603.                         NOTE:     Be  sure there  is  only ONE   space   
  3604.                         between  the  AREA  name   and  the address. 
  3605.   
  3606.                         You      can     now     send/receive      IBM     
  3607.                         echomail     from   1:230/300    using     ARC    
  3608.                         formatted   echo  bundles   and    have    his   
  3609.                         outbound    echomail    file-attach   messages   
  3610.                         flagged as Normal priority. 
  3611.   
  3612.                         If  another system wants to link into you,  go    
  3613.                         to step 4  and repeat the process to add it to   
  3614.                         your list. 
  3615.   
  3616.                         To     add    more  areas,  go  to  step   one     
  3617.                         and    repeat  the process. 
  3618.  
  3619.                                    Avoiding Echomail Errors 
  3620.   
  3621.                         Use   only ONE  space  between items  in   the   
  3622.                         EXPORT.CTL file on a  specific  line.    Using   
  3623.                         more  than  one  space   will   cause  errors.    
  3624.                         Each  line must end with  NO SPACES.   If  you     
  3625.                         have  extra spaces  following the last  entry,   
  3626.                         it will be translated into 0:0/0 
  3627.   
  3628.                         Don't   leave BLANK lines  in  the  EXPORT.CTL   
  3629.                         file.
  3630.  
  3631.                         An   error  that seems to occur frequently  is   
  3632.                         MIXING   archive    formats   for   the   same    
  3633.                         system.     In  other  words having  the  same   
  3634.                         system  defined as using ARC  for   one   area    
  3635.                         and  PKZIP in another area. This  will   cause   
  3636.                         you to lose messages. 
  3637.  
  3638.  
  3639.  
  3640.  
  3641.          Osiris SE         Technical Reference Manual        Page  45
  3642.  
  3643.                         Avoid   listing the same system  twice for the   
  3644.                         same  Echomail Area.    
  3645.   
  3646.                         Getting  the Echo Area  NAME wrong.  If   this    
  3647.                         happens,  the messages will end up in the  bad   
  3648.                         message area. 
  3649.   
  3650.                         Using the wrong Matrix  Address. 
  3651.   
  3652.                         ASK  the   sysop  of   the  system  you    are   
  3653.                         communicating  with  what address he  uses  to   
  3654.                         SCAN OUT. 
  3655.   
  3656.                         Some systems have multiple addresses, but  use   
  3657.                         only ONE   for scanning  purposes. If   you're   
  3658.                         expecting  100/504  and  the   system   you're    
  3659.                         getting the area from only  uses that  address   
  3660.                         to   drop   off mail  but SCANS  OUT  messages    
  3661.                         using   100/1,  then   you'll   end  up   with   
  3662.                         BACKFLOW. BACKFLOW is where you send the  SAME   
  3663.                         messages BACK to the person that sent them  to   
  3664.                         you  in the FIRST place. His system  will  see   
  3665.                         them as DUPLICATES, we HOPE. 
  3666.  
  3667.                         Export  MUST  be run from the same   directory    
  3668.                         you're    message bases  are in,   that's  the   
  3669.                         directory  defined  in the   TXT=  environment   
  3670.                         variable. 
  3671.   
  3672.                                           Config.sys 
  3673.   
  3674.                         Export  is VERY fast, compared to  other  echo   
  3675.                         processors.    To obtain some  of this  speed,   
  3676.                         I had to design special file  routines. 
  3677.   
  3678.                         Because  of the  way they work,  once I use  a   
  3679.                         file  handle,  it cannot be freed back  to the   
  3680.                         POOL  for   reuse  until  the  program   ends.     
  3681.                         This  means   you    have  maximum  number  of    
  3682.                         DIFFERENT  Nodes you can  send  to  during   a   
  3683.                         single   run. This   can   be  varied  by    a    
  3684.                         setting    in   Halcyon.cfg, MAX  SYSTEMS.  By    
  3685.                         default,   the  total  number   of   DIFFERENT   
  3686.                         nodes  per   control file is 20. If  20  isn't  
  3687.                         enough, hope you have a LARGE hard  drive, you   
  3688.                         may increase the amount using  MAX  SYSTEMS. 
  3689.  
  3690.  
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696.          Osiris SE         Technical Reference Manual        Page  46
  3697.  
  3698.                         As   you   increase   the  maximum  number  of    
  3699.                         systems,   you   must  increase  your  files=#   
  3700.                         proportionally. 
  3701.   
  3702.                         For   the   Default 20  systems,  your  FILES=   
  3703.                         should  be  set  to FILES=34. 
  3704.   
  3705.                         This   may  vary depending  on  your  hardware   
  3706.                         setup.  But  you  can test  it  using  the  /?   
  3707.                         switch.  It   will  tell you   the  number  of   
  3708.                         systems  it CAN send to, verses   the   number   
  3709.                         you want.
  3710.  
  3711.                                           Import.log
  3712.  
  3713.                         Export  will use, if it is available,  a  file   
  3714.                         called "IMPORT.LOG", created by import.exe, to   
  3715.                         control which areas it exports from. 
  3716.  
  3717.                         This can get you into trouble if you happen to   
  3718.                         use the /F and /R switches.
  3719.  
  3720.                         Since /R sets ALL "I NEED EXPORTING FLAGS"  to   
  3721.                         OFF,  if you had messages in areas not  listed   
  3722.                         in  the import.log file, those  messages  will   
  3723.                         not be exported.
  3724.  
  3725.                         If you are using the /R and /F switches, place   
  3726.                         "DEL IMPORT.LOG" in the batch file BEFORE  you   
  3727.                         run export.
  3728.  
  3729.                         This  can  increase  your  export  time,   but   
  3730.                         guarantees   that   ALL  messages   will   get   
  3731.                         exported. 
  3732.  
  3733.                         Again, If you use  /R or /F, delete the import   
  3734.                         log file before exporting.
  3735.  
  3736.                              Exporting And Multiple Line Systems
  3737.  
  3738.                         Although  export  does support  file  locking,  
  3739.                         there are other concerns when exporting  WHILE  
  3740.                         callers are on-line.
  3741.  
  3742.                         When you use TWO export control files, you run  
  3743.                         the  risk  of having someone  POST  a  message  
  3744.                         AFTER  the first pass, but before  the  second  
  3745.                         pass.
  3746.  
  3747.                         Their message will go out in the files created  
  3748.                         with the second control file, but not with the  
  3749.                         first.
  3750.  
  3751.          Osiris SE         Technical Reference Manual        Page  47
  3752.  
  3753.                         The  solution  to this type of problem  is  to  
  3754.                         divert  any  conference messages that  may  be  
  3755.                         posted  while  you are exporting  to  the  REV  
  3756.                         holding area, even if you have NOT defined the  
  3757.                         area as REV.
  3758.  
  3759.                         If  you are going to export WHILE callers  are  
  3760.                         on-line AND you are using more than one export  
  3761.                         control file, you'll need to call export  with  
  3762.                         the  command line switch *L BEFORE  you  begin  
  3763.                         the export process.
  3764.  
  3765.                         E.g., EXPORT *L
  3766.                               EXPORT ....Your FIRST run.
  3767.                         
  3768.  
  3769.                         This  engages  a conference  system  DIVERSION  
  3770.                         LOCK  and causes all newly  posted  conference  
  3771.                         messages  to  be diverted to the  REV  holding  
  3772.                         area.
  3773.  
  3774.                         There   WILL  be  a  5  second  pause   before  
  3775.                         export  EXITS when you use the *L  switch,  to  
  3776.                         give all lines time to respond to the LOCK.
  3777.  
  3778.                         After  you have finished exporting,  you  call  
  3779.                         export with the command line *U.
  3780.  
  3781.                         E.g., EXPORT *L
  3782.                               EXPORT ....Your FIRST run.
  3783.                               EXPORT ....Your SECOND run.
  3784.                               EXPORT *U
  3785.  
  3786.                         *U   will  DISENGAGE  the  conference   system  
  3787.                         DIVERSION LOCK and newly posted messages  will  
  3788.                         be posted according to the area type.
  3789.  
  3790.                         You  should  periodically check and  move  any  
  3791.                         messages  that  are diverted to the  REV  hold  
  3792.                         area.
  3793.  
  3794.                         
  3795.                                        Import 
  3796.   
  3797.               Import   takes    messages   out  of  archive    bundles      
  3798.               and  tosses  them  into  the   various  echomail  areas.     
  3799.  
  3800.               Import  does NOT require any command line switches.   It    
  3801.               gets all  its   information from the  Halcyon.cfg  file,    
  3802.               outlined later in this document. 
  3803.                   
  3804.               Import  supports   SIX archiving  formats;  normal  ARC,   
  3805.               PKARC, PKZIP format, LHARC, ARJ, and finally, ZOO. 
  3806.          Osiris SE         Technical Reference Manual        Page  48
  3807.  
  3808.               Nothing   needs   to be done  on your part  except    to      
  3809.               have the following programs in your OSIRIS= directory: 
  3810.   
  3811.                     PKXARC.EXE (renamed from PKUNPAK)  
  3812.                     PKUNZIP.EXE  
  3813.                     ZOO.EXE  
  3814.                     LHARC.EXE  
  3815.                     ARJ.EXE 
  3816.   
  3817.               If   all  attempts to  unbundle the  archive  fail,    I   
  3818.               will  assume the bundle is bad. If that happens, I  will   
  3819.               rename the bundle to HHMMSSXX.BAD and leave it for  your   
  3820.               personal attention. 
  3821.   
  3822.               IMPORT  MUST be run from your  TXT= directory.  It  will    
  3823.               go  to your   OSIRIS=  directory  to find  all   control    
  3824.               files    such  as  ECHO.CTL,  sysinfo.qbs,  newmail.sys,   
  3825.               etc.. 
  3826.   
  3827.                                           Dups 
  3828.   
  3829.                    Import   checks the newly arrived  messages to  see    
  3830.                    if  you've already  seen them. It does  this BEFORE   
  3831.                    you  import the message which should save a  little   
  3832.                    disk fragmentation. 
  3833.   
  3834.                    Import  uses  an EID duplicate   checking   system.   
  3835.                    It's    the   most  reliable method to   date   for    
  3836.                    controlling duplicates.
  3837.  
  3838.                    Import   will track the last 2000 messages in  each   
  3839.                    area   with a  fixed dupXX.dat file size. The  file   
  3840.                    will  never grow  nor shrink so the file will  stay    
  3841.                    contingent on your hard drive.
  3842.  
  3843.                                         Backup System
  3844.  
  3845.                         The  Dups checker has a backup high-speed  CRC   
  3846.                         system for messages that does not have an EID.   
  3847.                         These  are  few and far between, but  they  do   
  3848.                         exist.              
  3849.  
  3850.                                     Import's Echo.ctl File 
  3851.   
  3852.                    This   file  provides Import with the   information    
  3853.                    needed  to determine which ECHO AREA goes in  which   
  3854.                    Osiris  message area.
  3855.  
  3856.  
  3857.  
  3858.  
  3859.  
  3860.  
  3861.          Osiris SE         Technical Reference Manual        Page  49
  3862.   
  3863.                    The lay out of the echo.ctl file is pretty straight   
  3864.                    forward. 
  3865.   
  3866.                    Area# Conference_NAME  
  3867.                    Area# Conference_NAME 
  3868.   
  3869.                    I have reserved the first line of the Echo.ctl  for   
  3870.                    future  use and you HAVE to use "0 PRIMER LINE"  as   
  3871.                    the VERY FIRST LINE.
  3872.  
  3873.                                      Sample Echo.ctl
  3874.  
  3875.                    0 PRIMER LINE  
  3876.                    3 COLLEGE 
  3877.                    4 HPOLITICS 
  3878.                    6 TREK 
  3879.                    7 VIETNAM_VETS 
  3880.                    8 VET_REUNION 
  3881.                    9 HST 
  3882.                    10 WORLD 
  3883.                    11 HTMS_SYSOP 
  3884.                    12 AI
  3885.  
  3886.                                       Common Error
  3887.  
  3888.                    A  common, and fatal, mistake is padding echo  area   
  3889.                    names with spaces. In other words:
  3890.  
  3891.                    7 VIETNAM_VETS<SPACE>
  3892.  
  3893.                    Import will see the area name as "VIETNAM_VET " and   
  3894.                    not  as  "VIETNAM_VET" and any echo coming  in  for   
  3895.                    "VIETNAM_VET"  will  be placed in the  bad  message   
  3896.                    area.
  3897.  
  3898.                    This mistake can be a very hard to spot  because  a   
  3899.                    trailing  space  will  not show  up  in  your  text   
  3900.                    editor.
  3901.  
  3902.                    The  easy way to find this type of error is to  use   
  3903.                    Pctools File Editor, Norton will work, in HEX mode.   
  3904.                    Spaces will show up as 20H.
  3905.  
  3906.                    Best  way to avoid this type of error is to  use  a   
  3907.                    text  editor  that doesn't end lines  with  spaces. 
  3908.   
  3909.                    Edwin  and Sidekick are good control  file  editors   
  3910.                    while  Qedit  and Edlin are not.
  3911.  
  3912.                    Don't  get me wrong, Qedit is a good  editor.  It's   
  3913.                    just not good for control files.
  3914.  
  3915.  
  3916.          Osiris SE         Technical Reference Manual        Page  50
  3917.  
  3918.                                      Import Em Cache
  3919.  
  3920.                    Import has its own internal EMS/LIM 4.00 cache that   
  3921.                    is  hundreds  of  times more  effective  than  your   
  3922.                    traditional disk cache.
  3923.  
  3924.                    I  have  the advantage of knowing in  advance  what   
  3925.                    data  is  likely to be needed again and  I'll  only   
  3926.                    cache that data. I'll ignore data that isn't  going   
  3927.                    to  be needed again. This accounts for  its  higher   
  3928.                    than normal hit ratio, generally around 90 percent. 
  3929.                    Since I know what should or should not be cached, I   
  3930.                    can  bypass the system read/write requests  and  go   
  3931.                    directly to the cache. This allows your normal disk   
  3932.                    cache,  if  you  are running one,  to  retain  data   
  3933.                    longer than it normally would.
  3934.  
  3935.                    The import EM cache is an expandable cache.  Unlike   
  3936.                    traditional  caches,  I'll expand the size  of  the   
  3937.                    cache  when  I need more space. I'll start  with  0   
  3938.                    bytes  and expand the cache up to 4 million  bytes.   
  3939.                    If  no space is available, I'll use a  "LESS  USED"   
  3940.                    algorithm to determine which block to replace  with   
  3941.                    the new data.
  3942.  
  3943.                    If  for some reason you do not want Import  to  use   
  3944.                    the cache, add NO_CACHE to the import command line.
  3945.  
  3946.                    E.g., Import No_cache
  3947.  
  3948.                                        Cache Statistics 
  3949.                     
  3950.                         At the end of an import run, I'll display  the   
  3951.                         EM  cache statistics; Memory used  for  cache,   
  3952.                         number  of  read  requests,  number  of  write   
  3953.                         requests,  number  of  reads  actually   done,   
  3954.                         number of writes actually done, read hit rate,   
  3955.                         and write hit rate.
  3956.  
  3957.                         The  number of read and write requests do  not   
  3958.                         reflect  ALL  read/write requests.  They  only   
  3959.                         reflect  read/write requests for data I  would   
  3960.                         normally cache. I ignored read/write  requests   
  3961.                         for data I would not normally cache.
  3962.  
  3963.                                        Disk Space 
  3964.   
  3965.                I an not going to waste time monitor disk space and I'm   
  3966.                going  to just assumes  you've  got enough  to get  the   
  3967.                job  done.  If  you run out, Halcyon  is   as  good   a    
  3968.                place as any to Stop. If you're out, nothing  else   on   
  3969.                your system is going to run. I will not even be able to   
  3970.                write an error log so . . . 
  3971.          Osiris SE         Technical Reference Manual        Page  51
  3972.  
  3973.                                      Speed Tips 
  3974.   
  3975.               There   are   several things you can  do   to   decrease    
  3976.               your processing time. 
  3977.   
  3978.               Have   Export  store  the temporary  PKT in the   Osiris    
  3979.               TXT    root   directory.   Dos  gets very slow  when  it   
  3980.               has   to   work   across  directories  and   even S L  O  
  3981.               W  E   R   if   it's  across drives.  Use    PKzip   for  
  3982.               outbound storage, if  at  all  possible.   It's  by  far  
  3983.               the fastest. Export only one time per day and find FEEDS  
  3984.               that  will  do   the same  for you.  This  will  greatly  
  3985.               reduce YOUR  import  time . Don't   use  the /M  setting  
  3986.               unless  you just  plain  have   to. Your  archive   time  
  3987.               will  go  down a tad, but the  time  to  break  off  and  
  3988.               pick  back  up will more than offset it. RUN    A   DISK  
  3989.               CACHE!!! Set it to 128K, no  larger,   and   lower  your   
  3990.               BUFFERS=  statement  in your config.sys to 10.   Yes,  I   
  3991.               did say 10. Use  a Disk compression program like  OPTUNE  
  3992.               (By  far   the   best) with  FULL   DEFRAGMENTATION  and  
  3993.               FILE   REALIGNMENT   twice  a week.
  3994.  
  3995.               Keep  your  Hard Drive partitions as small as  possible.    
  3996.               Smaller  partition run faster than large, over  30  meg,   
  3997.               partitions. 
  3998.   
  3999.               If  you have a LOT of message areas, over 150, then move    
  4000.               the HDR files to a different directory. 
  4001.   
  4002.               To do this define HDR= in the environment. 
  4003.   
  4004.               If   you  have less than 150, don't do this or the   Dos    
  4005.               cross directory file slow down will make it even slower. 
  4006.   
  4007.                                    Halcyon.cfg 
  4008.   
  4009.               The  final setup is to configure the  Halcyon.cfg  file.    
  4010.               Import and export get needed information from this file. 
  4011.   
  4012.               Enclosed   is   a  sample.cfg  file   showing   what   a    
  4013.               Halcyon.cfg   looks  like. Below is a step by  step  run   
  4014.               down  of the configuration options. 
  4015.  
  4016.  
  4017.  
  4018.  
  4019.  
  4020.  
  4021.  
  4022.  
  4023.  
  4024.  
  4025.  
  4026.          Osiris SE         Technical Reference Manual        Page  52
  4027.  
  4028.               The  centered text is a halcyon.cfg option. You   follow    
  4029.               each  option   with  the required information,  if  any.   
  4030.               Place  one  blank  space between the command  line  text   
  4031.               and the data. 
  4032.   
  4033.                                          Use Ems 
  4034.   
  4035.                    This tells me to map to EMS when I call an  archive   
  4036.                    program such as Pkunzip or Lharc. 
  4037.   
  4038.                    If you do not have EMS or do not want it used, I'll   
  4039.                    map to DISK. 
  4040.   
  4041.                                      Bypass Security
  4042.  
  4043.  
  4044.                    Traditional  import  programs  will  "ASSUME"  that   
  4045.                    anything that isn't an echomail message is a matrix   
  4046.                    message  and that message will be tossed into  your   
  4047.                    mailers matrix area.
  4048.  
  4049.                    That  in itself is boggiest and not all  "UNKNOWNS"   
  4050.                    will be matrix messages.
  4051.  
  4052.                    This also leaves you open to those that may wish to   
  4053.                    cause you problems.
  4054.  
  4055.                    Fidonet  mailers, all of them we've tested, have  a   
  4056.                    security  gap large enough to drive a train  though   
  4057.                    in  this area. It is possible to trick  the  mailer   
  4058.                    into  forwarding matrix messages,  attaching  files   
  4059.                    (even  user records), and other items without  your   
  4060.                    consent.
  4061.  
  4062.                    ISIS, an HTMS/FIDOnet mailer, has internal security   
  4063.                    systems  to  prevent  this  by  disallowing  matrix   
  4064.                    messages in echomail archives. You can bypass those   
  4065.                    security systems by using this switch.
  4066.  
  4067.                    Warning,  using  this switch will  void  your  ISIS   
  4068.                    warranty.
  4069.  
  4070.  
  4071.  
  4072.  
  4073.  
  4074.  
  4075.  
  4076.  
  4077.  
  4078.  
  4079.  
  4080.  
  4081.          Osiris SE         Technical Reference Manual        Page  53
  4082.  
  4083.                                    Max Cache Size 
  4084.   
  4085.                    This  determines  the maximum size  the  EM  import   
  4086.                    cache.
  4087.  
  4088.                    Valid sizes range from 10 to 200. Each increment is   
  4089.                    equal to 16384 bytes. E.g., Max cache size 10 would   
  4090.                    equal  163840 bytes. EMS can only be  allocated  in   
  4091.                    16384 byte blocks.
  4092.  
  4093.                    Example : MAX CACHE SIZE 200
  4094.  
  4095.                                  Ems Handles, Very Important
  4096.  
  4097.                         In  order for import to use an EXPANDABLE,  on   
  4098.                         demand  cache, each block uses 1  EMM  Handle.   
  4099.                         Your memory manager should be set to allow MAX   
  4100.                         CACHE SIZE + 10 EMM Handles. Almost all memory   
  4101.                         managers  have  a  default of  32  or  64  EMM   
  4102.                         handles,  but  do allow you  to  increase  the   
  4103.                         number  of  EMM Handles with  a  command  line   
  4104.                         switch. QEMM uses HANDLES=, AST uses PID=  and   
  4105.                         CONTEXT=. Check the manual that came with your   
  4106.                         memory   manager   for  the   correct   switch   
  4107.                         settings.
  4108.  
  4109.                         The  program  EMCHECK.EXE will  tell  you  how   
  4110.                         large  MAX CACHE SIZE can be for your  current   
  4111.                         settings.   Just  run  it,  no  command   line   
  4112.                         switches needed.
  4113.  
  4114.                                        No Em Cache
  4115.  
  4116.                    If  you do not want import to use EMS caching,  add   
  4117.                    this  command.  This will drastically  reduce  your   
  4118.                    import  speed so it is not recommended, but  it  is   
  4119.                    available.
  4120.  
  4121.                                      Maximum Memory 
  4122.            
  4123.                    This  tells  me you're running with less  then  the   
  4124.                    ideal amount of memory and that you REALLY need all   
  4125.                    that can be squeezed out of the machine. You almost   
  4126.                    always will need this switch if you are running  in   
  4127.                    a DV window. 
  4128.                                      Matrix Address 
  4129.   
  4130.                    Import  Echomail addressed to this address. You can    
  4131.                    define up to 10 of them. 
  4132.   
  4133.                     e.g.,  MATRIX  ADDRESS  902/1       
  4134.  
  4135.  
  4136.          Osiris SE         Technical Reference Manual        Page  54
  4137.  
  4138.                                         Common Mistake
  4139.  
  4140.                         There  are several common mistakes  associated   
  4141.                         with these addresses.
  4142.  
  4143.                         One is to include the zone number. Do NOT  ADD   
  4144.                         THE  ZONE  NUMBER. Use  _ONLY_  your  net/node   
  4145.                         number.
  4146.  
  4147.                         Do not use your HTMS address, if you're  using   
  4148.                         ISIS.
  4149.                                         Tear Line 
  4150.   
  4151.                    Use  the  following  text as the TEAR  line. 
  4152.   
  4153.                    e.g., TEAR LINE Halcyon 3.01
  4154.  
  4155.                                         Point Net 
  4156.   
  4157.                    Define  a POINT net address. When export I'll  take   
  4158.                    this  address  and strip it from the  CURRENT  seen   
  4159.                    by lines.
  4160.  
  4161.                    e.g., POINT NET 25202 
  4162.   
  4163.                                       Htms Address 
  4164.   
  4165.                    Define   an   HTMS address. Used only  if  you  are   
  4166.                    running ISIS. 
  4167.   
  4168.                    e.g., HTMS ADDRESS 13143346359
  4169.  
  4170.                                     Archive Directory 
  4171.   
  4172.                    I'll store  all outbound ARCHIVED bundles in   this    
  4173.                    directory. Useful if you are low on disk space  and   
  4174.                    wish to split  things between two drives. 
  4175.   
  4176.                    e.g., ARCHIVE DIRECTORY C:\lynx\arcmail 
  4177.   
  4178.                                        Msg Format 
  4179.   
  4180.                    I'll use MSG file attaches instead of  the  default   
  4181.                    HTMS  file  attach messages. For use  with  systems   
  4182.                    using Binkley, FD, D'bridge, etc.. (NOTE: I do  not   
  4183.                    support OMMM style bundles). 
  4184.   
  4185.                    e.g., MSG FORMAT
  4186.  
  4187.                    If you are running Binkley, I'm afraid you might as   
  4188.                    well  stop  right here. Although I know   of  folks   
  4189.                    using  Binkley and Osiris, it's just not worth  the   
  4190.                    trouble. 
  4191.          Osiris SE         Technical Reference Manual        Page  55
  4192.  
  4193.                    Binkley  is  one  of those  programs  that  has  an   
  4194.                    identity  problem.  It  doesn't  know  if  it's   a   
  4195.                    terminal program or a mailer and ends up not  doing   
  4196.                    either very well. 
  4197.  
  4198.                                  Outbound Msg Directory
  4199.  
  4200.                    I'll place  the  HTM  or MSG file attach   messages    
  4201.                    in    this    directory.  Once   again,   I'm   not   
  4202.                    referencing OMMM style bundles.  
  4203.   
  4204.                    e.g., OUTBOUND MSG DIRECTORY c:\email
  4205.  
  4206.                                     Inbound File Path 
  4207.   
  4208.                    I'll  look  in this directory for  inbound  arcmail   
  4209.                    bundles.   Keep in mind, I expect all  echomail  to   
  4210.                    arrive in archived format. 
  4211.   
  4212.                    e.g. INBOUND FILE PATH c:\fidonet
  4213.  
  4214.                                   Pkt Temp Storage 
  4215.   
  4216.                    I'll  place  the  unarchived  PKT  files  in   this    
  4217.                    directory  until it is time to move them  into  the   
  4218.                    archive.
  4219.  
  4220.                    Useful  if your disk space is a little on  the  low   
  4221.                    side. You might want to store  the PKT files on one   
  4222.                    drive  but  when it comes time to   archive   them,   
  4223.                    archived to a different drive. 
  4224.   
  4225.                    e.g. PKT TEMP STORAGE D:\ 
  4226.   
  4227.                                      Dup.dat Storage 
  4228.   
  4229.                    Tells  me  which directory  the   DUPxx.DAT   files    
  4230.                    will   be stored.  Useful if you  need  to   spread   
  4231.                    things across two or three drives. 
  4232.   
  4233.                    e.g.   DUP.DAT STORAGE c:\dups 
  4234.   
  4235.                                        Max Systems 
  4236.   
  4237.                    Lets  you  increases   the  number  of   individual   
  4238.                    systems  support  during a single export  run.  The   
  4239.                    default  value is 20 systems and does  not  require   
  4240.                    the  use of MAX SYSTEMS. The  upper  limit for  MAX   
  4241.                    SYSTEMS is 99. 
  4242.   
  4243.                    e.g. MAX SYSTEMS 45
  4244.  
  4245.  
  4246.          Osiris SE         Technical Reference Manual        Page  56
  4247.   
  4248.                                     Unknown Save Area 
  4249.   
  4250.                    Any  message that I don't UNDERSTAND; an  undefined   
  4251.                    area,  MATRIX message, or grunged messages will  be   
  4252.                    placed here.
  4253.  
  4254.                    This  should point to your MAILER matrix  area  and   
  4255.                    I'll  save the message either in HTM format or  MSG   
  4256.                    format,  depending  on the TYPE of mailer  you  are   
  4257.                    running.
  4258.  
  4259.                                     Matrix Ending Up Here
  4260.  
  4261.                         One  of the most common questions is WHY  does   
  4262.                         my Matrix mail end up here?
  4263.  
  4264.                         There  is  basically no difference  between  a   
  4265.                         Matrix message and a grunged message. 
  4266.  
  4267.                         I.e., there are no special "Designators"  used   
  4268.                         to set matrix and echomail apart.
  4269.  
  4270.                         You should never send matrix mail inside of an   
  4271.                         echomail archive for several reasons.   
  4272.  
  4273.                         Reason1: The destination system MAY be running   
  4274.                         secure  echomail  and if he is, you  will  not   
  4275.                         know that your message did not arrive.
  4276.  
  4277.                         Reason2:  With MSG based message systems,  you   
  4278.                         can safely assume certain things, grunged  may   
  4279.                         not  be grunged but matrix. If  you're  wrong,   
  4280.                         you only lose a single message.
  4281.  
  4282.                         With nonMSG based message systems, you cannot   
  4283.                         afford to make those types of assumptions.
  4284.  
  4285.                         A   wrong  guess  can  destroy   hundreds   or   
  4286.                         thousands of messages.
  4287.  
  4288.                         Reason3:  There are several   security  issues   
  4289.                         involved  that I'd rather not go into  because   
  4290.                         of their delicate nature. Let us just say that   
  4291.                         all kinds of hell can be raised by those  with   
  4292.                         less than honest intentions.
  4293.  
  4294.                         There   are  a  couple  of  popular   echomail   
  4295.                         programs,   qmail   is   one,   that    assume   
  4296.                         unidentified echomail is matrix mail.
  4297.  
  4298.  
  4299.  
  4300.  
  4301.          Osiris SE         Technical Reference Manual        Page  57
  4302.  
  4303.                         They claim it as a feature, but it is really a   
  4304.                         giant hole in their logic that can be used  to   
  4305.                         reek havoc on those using it.
  4306.  
  4307.                                        Formatting 
  4308.   
  4309.                    Spaces  are  NOT important within  the  HALCYON.CFG   
  4310.                    file as  long as at least ONE space is there.  CASE   
  4311.                    is  not important. I'll ignore blank lines as  well   
  4312.                    as anything following a semicolon.
  4313.  
  4314.                                      Echo/Pass 
  4315.   
  4316.               I'll  automatically  clear an area as soon as  I  finish    
  4317.               exporting its messages, providing you have not used  the   
  4318.               /F  switch. This will free up disk space as you  process    
  4319.               and your PKT files become larger. 
  4320.   
  4321.                                    Seen By Lines 
  4322.   
  4323.               Halcyon supports FULL seen by lines in or out as well as   
  4324.               sub-sets.  I'll not tamper with existing seen  by  lines   
  4325.               except    to  remove  any  point  net  listings   you've    
  4326.               defined.  I'll automatically remove any NET ZERO ie. 0/9    
  4327.               or  0/0 entries as non-valid. 
  4328.   
  4329.                               Quad Already Seen System 
  4330.   
  4331.               I   use a QUAD Already Seen it system  instead  of   the   
  4332.               traditional  single phase seen by line  approach.  Which   
  4333.               means  import is 4 times  more  accurate  when it  comes    
  4334.               to   stopping  duplicate traffic than  Confmail  4.0  or   
  4335.               Qmail.
  4336.  
  4337.               This  makes Halcyon, combined with the  FILTER  options,   
  4338.               the  blazing  speed, and the EID dup checking  the  best   
  4339.               Echomail processor you could possible run.
  4340.  
  4341.                                     Origin Lines 
  4342.   
  4343.               Osiris   no   longer  directly supports  ANY   type   of    
  4344.               echomail,  although  I have provided HOOKS for  external   
  4345.               processors such  as Halcyon. 
  4346.   
  4347.               You'll  find, in each message area, a  place  to  define    
  4348.               an  ORIGIN  line for the area. 
  4349.  
  4350.               You  use  an  ORIGIN  line to  show  WHERE  the  message   
  4351.               originated. You should place the NAME of your BBS,  City   
  4352.               and  State,   and the PHONE number, providing  there  is   
  4353.               room, in the origin line.
  4354.  
  4355.  
  4356.          Osiris SE         Technical Reference Manual        Page  58
  4357.  
  4358.               e.g.
  4359.  
  4360.               VetLink #3, Cape Girardeau, Mo. (314 334-6359)
  4361.  
  4362.               Do  NOT  add  ZONE:NET/NODE  information.  Halcyon  will   
  4363.               automatically include it in the proper place.
  4364.  
  4365.                                      Databases 
  4366.   
  4367.               Neither  Import  nor  Export can CREATE  missing message    
  4368.               database   files. Both programs demand   the  HDRxxx.SYS   
  4369.               and TXTxxxx.SYS files exist. 
  4370.   
  4371.               I'm  not  going  to  validate   or  trap   for   missing   
  4372.               databases.  The  VERIFY option, in OSM, and CAT  can  be   
  4373.               used to create missing databases. 
  4374.   
  4375.               Attempting  to  import mail  into  non-existing  message   
  4376.               bases  can result  in system lockups, spraying parts  of   
  4377.               the    message   on  the  screen,  and   other   "weird"   
  4378.               happenings.  
  4379.           
  4380.                              Error Reading/Writing Record 0
  4381.  
  4382.                    This is a BTREE index error which means I  couldn't   
  4383.                    FIND the ISIS nodelist.dat and nodelist.idx  files,   
  4384.                    the ISIS primary nodelist.
  4385.  
  4386.                    These  two files MUST be in the OSIRIS=  directory.   
  4387.                    If   you're  running  ISIS  out  of   a   different   
  4388.                    directory,  copy  these two files  to  the  OSIRIS=   
  4389.                    directory.
  4390.  
  4391.                                     Traffic.exe
  4392.  
  4393.               This  is  an additional program that will allow  you  to   
  4394.               view incoming echomail activity. How much, where,  when,   
  4395.               and who. Just run it, no command line switches needed. 
  4396.  
  4397.                                     Readarc.exe
  4398.  
  4399.               I'll  track the compressed byte amount for  each  system   
  4400.               that I send to. This can be used for shared billing when   
  4401.               one  system retrieves echomail for multiple  systems  in   
  4402.               the same area.
  4403.  
  4404.               Readarc.exe takes the archive.log and compiles the total   
  4405.               statistics  for  each system and then prints it  to  the   
  4406.               screen.
  4407.  
  4408.  
  4409.  
  4410.  
  4411.          Osiris SE         Technical Reference Manual        Page  59
  4412.  
  4413.               DOS redirect, can be used if you want to have it  written   
  4414.               to a text file.
  4415.  
  4416.                    e.g. readarc > results.txt
  4417.  
  4418.                                       Ulink
  4419.  
  4420.               Ultralink  is  an  OSIRIS  SE  conversion  linker   that    
  4421.               links messages  that did not originate on your system.
  4422.  
  4423.               The   MAXIMUM number of message I can link in any  given   
  4424.               area is 5000. 
  4425.   
  4426.               Ultralink looks  small and doesn't require  much  memory   
  4427.               when  it first  starts, 80K, but it can quickly  consume   
  4428.               a large  chunk of memory. It can require as much as 512K   
  4429.               on areas that push it close to the 5000 message limit. 
  4430.   
  4431.               To   use  Ultralink you must be in the  directory   that   
  4432.               contains  the HDRxx.SYS files and your OSIRIS=  must  be   
  4433.               defined so  I can find you msgboard.qbs file.  
  4434.                
  4435.               I'll display the name of the area I am currently linking   
  4436.               along  with the number of messages in that area. When  I   
  4437.               have  finished linking all the areas, I'll  display  the   
  4438.               TOTAL number  of messages scanned and the elapse time in   
  4439.               seconds. 
  4440.   
  4441.               If  I find the file IMPORT.LOG, created  by  import.exe,   
  4442.               I'll use it to limit linking only to areas that received   
  4443.               new  echomail. That means run Ultralink  directly  AFTER   
  4444.               import.exe and but BEFORE export.
  4445.  
  4446.               Ultralink  can also accept one command line switch,  /M.   
  4447.               This tells me you only want the message center  messages   
  4448.               linked.
  4449.  
  4450.                                     Sphinx!
  4451.  
  4452.          As  the  SysOp,  you will need to be able  to  READ  messages   
  4453.          easily and have MORE control than the average user.
  4454.  
  4455.          Most BBS' packages require you to LOG ON locally to read  mail,   
  4456.          how quaint.
  4457.  
  4458.          Sphinx!  is  an Osiris compatible sysop  editor  for  message   
  4459.          reading/editing.  
  4460.  
  4461.  
  4462.  
  4463.  
  4464.  
  4465.  
  4466.          Osiris SE         Technical Reference Manual        Page  60
  4467.  
  4468.          Sphinx!  really needs a mouse, but can be used with  HOTKEYS.   
  4469.          You will also need roughly 384K of free memory. 
  4470.  
  4471.          Sphinx! will READ your video adapter and switch between COLOR   
  4472.          and B/W mode depending on which video adapter is active.
  4473.  
  4474.                                     Display.dat
  4475.  
  4476.               Display.dat  MUST be in the current directory.  This  is   
  4477.               the  Sphinx primary display screen. See sub  section  on   
  4478.               color  for  an  explanation on  how  to  configure   the   
  4479.               primary display colors.
  4480.  
  4481.          Sphinx! requires ONE command line switch, the USER record  to   
  4482.          load  and  use. The switch /U or -U, case is  NOT  a  factor,  
  4483.          followed  by the record number. Remember, user records  start   
  4484.          with record number ZERO (0).
  4485.  
  4486.          e.g. sphinx /U0
  4487.  
  4488.          Load the first or record #0. This is usually your record.
  4489.  
  4490.          You  can  run Sphinx! from any directory or drive  but  I  do   
  4491.          recommend  you  call  it in your Osiris  ROOT  directory  for   
  4492.          maximum speed.
  4493.  
  4494.          I have divided the primary display screen  into four areas.
  4495.  
  4496.          The  first  area, at the top of the screen, consists  of  two   
  4497.          rows. The first row is the name of the area you're in. If the   
  4498.          message center then "Osiris Message Center." If you're in one   
  4499.          of  the  conference  areas, the name of  that  area  will  be   
  4500.          displayed.
  4501.  
  4502.          The  Second  row  contains the  message  Attributes  for  the   
  4503.          current message; Received, Deleted, Return Receipt Requested,   
  4504.          etc.
  4505.  
  4506.          The  second  area  contains  information  about  the  current   
  4507.          message;  who it is to, who it is from, and the  subject.  At   
  4508.          the  END of the subject line, you'll see two sets of  numbers   
  4509.          separated by a forward slash '/'. 
  4510.  
  4511.          e.g. 6/235
  4512.  
  4513.          The  FIRST number, 6, indicates you're ON the sixth  message.   
  4514.          The  SECOND  number, 235, indicates the LAST message  in  the   
  4515.          current area is number 235. 
  4516.  
  4517.          The area, located slightly off center on the lower 2/3rd's of   
  4518.          the screen, is the message text window.
  4519.  
  4520.  
  4521.          Osiris SE         Technical Reference Manual        Page  61
  4522.  
  4523.  
  4524.          There  are several special sub-windows located on  the  outer   
  4525.          parameters of this window.
  4526.  
  4527.          On  the bottom horizontal double line border; Chain  Original   
  4528.          and Chain Reply.
  4529.  
  4530.          Either  of these options may be selected by clicking on  them   
  4531.          with the left mouse button or pressing the HOTKEYS (- or  +),   
  4532.          respectively.  In order for - and + to work, the message  has   
  4533.          to be linked with other messages in a conversation chain.
  4534.  
  4535.          On the right side of the window there are two SQUARES located   
  4536.          on the vertical double border, one at the top and one at  the   
  4537.          bottom.
  4538.  
  4539.          Provides a method of quickly jumping to the top or the bottom   
  4540.          of the current message. Click, with the left mouse button, to   
  4541.          select. HOTKEYS Ctrl-PgUp and Ctrl-PgDn may also be used.
  4542.  
  4543.          The  fourth primary window, located on the lower half on  the   
  4544.          far  right hand side of the screen, contains several  options   
  4545.          which can be selected by pressing the left mouse button.
  4546.  
  4547.          Below is a list of the options, their purpose, and the HOTKEY   
  4548.          that can be used.
  4549.  
  4550.          Function                Purpose                   HOTKEY 
  4551.          ----------------------------------------------------------- 
  4552.          Enter              Enter a New Message              E 
  4553.          Reply           Reply To Current Message            R 
  4554.          Kill            Kill The Current Message            K 
  4555.          DOS                   Jump To DOS                   D 
  4556.          Exit                  Exit Sphinx!                 ESC 
  4557.          Menu         Access Special Sphinx! Options         M 
  4558.          First         Jump to FIRST Message in Area        HOME 
  4559.          Last          Jump to LAST Message in Area         END 
  4560.          <--               Move Back a Message           LEFT ARROW 
  4561.          -->              Move Forward A Message        RIGHT ARROW 
  4562.          Up Arrow    Scroll Message Window Up A Line      UP ARROW 
  4563.          Dn Arrow    Scroll Message Window DN A Line      DN ARROW 
  4564.          PgUP       Scroll Message Window UP 20 Lines       PgUp 
  4565.          PgDN       Scroll Message Window DN 20 Lines       PgDn 
  4566.          Help       Displays a small Help window           ALT-H
  4567.  
  4568.  
  4569.  
  4570.  
  4571.  
  4572.  
  4573.  
  4574.  
  4575.  
  4576.          Osiris SE         Technical Reference Manual        Page  62
  4577.  
  4578.                          Page Intentionally Left Blank
  4579.  
  4580.  
  4581.  
  4582.  
  4583.  
  4584.  
  4585.  
  4586.  
  4587.  
  4588.  
  4589.  
  4590.  
  4591.  
  4592.  
  4593.  
  4594.  
  4595.  
  4596.  
  4597.  
  4598.  
  4599.  
  4600.  
  4601.  
  4602.  
  4603.  
  4604.  
  4605.  
  4606.  
  4607.  
  4608.  
  4609.  
  4610.  
  4611.  
  4612.  
  4613.  
  4614.  
  4615.  
  4616.  
  4617.  
  4618.  
  4619.  
  4620.  
  4621.  
  4622.  
  4623.  
  4624.  
  4625.  
  4626.  
  4627.  
  4628.  
  4629.  
  4630.  
  4631.          Osiris SE         Technical Reference Manual        Page  63
  4632.  
  4633.                                    Message Center
  4634.  
  4635.               The  MENU  option,  from the Message  Center,  offers  4  
  4636.               additional  options.
  4637.  
  4638.               To  select  one of the options on the MENU window,  move   
  4639.               the  mouse  cursor to the row containing the option  you   
  4640.               want   and   click  the  LEFT mouse button. A  box  will  
  4641.               appear   around  the  selection  to  indicate  that   it   
  4642.               is    TAGGED.    Once    you're   satisfied   with   the  
  4643.               selection, click on the TAGGED BOX again.
  4644.  
  4645.               There   are  TWO  methods  of  CANCELING  your   current   
  4646.               selection.   You can move to a different  selection  and  
  4647.               click  on it or  you  can click your RIGHT mouse  button  
  4648.               and return to read mode.
  4649.  
  4650.               Below   is   a   list   of   the   options   and   their   
  4651.               purpose.   I   associated each function  with  a  HOTKEY  
  4652.               using  the  "first  come,   first   serve"    principle,  
  4653.               starting with 'A' and  ending  with  'Z'.
  4654.  
  4655.                           Print Current Message To A Text File
  4656.  
  4657.                    You    have  the  option  of  using  the   default,   
  4658.                    MSG.SAV,  by  pressing  RETURN or clicking the LEFT  
  4659.                    mouse  button.  You  can  clear  the field, ESC  or  
  4660.                    Middle  Mouse  Button,  and  enter a new name.  The  
  4661.                    current  message  will be written or   appended  to  
  4662.                    this file. 
  4663.  
  4664.                             Print Current Message To Printer
  4665.  
  4666.                    This   is  the  same as  the  previous  option  but  
  4667.                    instead  of  writing  the  message to a file,  I'll  
  4668.                    write it  to  your  printer.
  4669.  
  4670.                    You   have  the  option of  use  LPT1  by  pressing   
  4671.                    return  or  clicking the LEFT mouse BUTTON. You may  
  4672.                    clear  the  field  ,ESC  or  Middle  Mouse  Button,  
  4673.                    and  enter  a  new  printer  port. Use  the  format  
  4674.                    LPTx with x being the printer port.
  4675.  
  4676.                    Supported Printer ports:
  4677.  
  4678.                    LPT1 LPT2 LPT3 LPT4 LPT5 LPT6 LPT7 LPT8
  4679.  
  4680.                                 Conference Message Areas
  4681.  
  4682.                    Takes you to the Conference Message Areas, this  is  
  4683.                    where  we keep the public/echo  messages.
  4684.  
  4685.  
  4686.          Osiris SE         Technical Reference Manual        Page  64
  4687.  
  4688.                                       List Headers
  4689.  
  4690.                    Displays   a  list of the message headers  in   the   
  4691.                    current  area.  
  4692.  
  4693.                    I'll   ask  you for the  starting  message  number,   
  4694.                    pressing  return or clicking the LEFT mouse  button  
  4695.                    will  accept  the  default. Use ESC or  the  Middle  
  4696.                    mouse  button  to clear the  field  or any  of  the  
  4697.                    normal  editing  keys  to   chance   the   starting   
  4698.                    number  to  the one you want.  When  the   starting   
  4699.                    number   suits you, press RETURN or click the  LEFT   
  4700.                    mouse  button.
  4701.  
  4702.                    You'll   have to specify which of the three  header   
  4703.                    field   you  want  me to display. Given the  volume  
  4704.                    of   text,   it  is  not  possible to  display  all  
  4705.                    three  fields.  You  can  select either: To,  From,  
  4706.                    or Subj. Move the inverted  bar  to  the  field you  
  4707.                    want, using your mouse or  the  UP/DN  arrow  keys.  
  4708.                    Click  the LEFT mouse button or press   RETURN   to  
  4709.                    select.
  4710.  
  4711.                    The   display window will hold up to   20   message   
  4712.                    before    requiring   you to  signal  either  JUMP,  
  4713.                    CANCEL,   or   MORE.   You'll know  when  it  needs  
  4714.                    input, you hear a short  sharp  beep.
  4715.  
  4716.                    To   select  one of the option,  move to  the   BOX   
  4717.                    (JUMP,  CANCEL,  or MORE) and click the LEFT  mouse   
  4718.                    button.   You  may also HOTKEY the selection  using  
  4719.                    the first  character  i.e. C, J, or M.
  4720.  
  4721.                    If   the beep sounds and the window isn't full,  it   
  4722.                    means   end  of  messages.  Select either the  MORE   
  4723.                    or  JUMP  to  continue.
  4724.  
  4725.                    JUMP  allows  you  to go  directly  to  the  TAGGED  
  4726.                    message. It  will ABORT the listing, return to  the  
  4727.                    area, and  display  the message.
  4728.  
  4729.                    To  TAG a message for JUMP,  move the mouse  cursor  
  4730.                    to  the  line  containing  the message you want  to   
  4731.                    jump  to  and  click  the  RIGHT  mouse button.  An   
  4732.                    inverse  bar  will  highlight your selection.  Move  
  4733.                    to the JUMP BOX and click  the LEFT mouse button.
  4734.  
  4735.                    If   you  accidentally  TAG the wrong  one,   click   
  4736.                    on  it  again.
  4737.  
  4738.  
  4739.  
  4740.  
  4741.          Osiris SE         Technical Reference Manual        Page  65
  4742.  
  4743.                    If you have TAGGED a message, but click on the MORE  
  4744.                    BOX,  your TAG will be cleared. 
  4745.  
  4746.                    I'm sorry, but this function will ONLY work if  you   
  4747.                    have  a mouse.
  4748.  
  4749.                    TAG/JUMP   will  REMEMBER  the  message  you   have   
  4750.                    JUMPED   TO   and  if  you select to  LIST  HEADERS   
  4751.                    again,   and  you're  still in the same area,  I'll   
  4752.                    present you with the  next  highest  message number  
  4753.                    as the default starting  message  number. 
  4754.  
  4755.                    This   allows  you to jump quickly down  the   list   
  4756.                    viewing   messages  from, to, or  on  any  specific  
  4757.                    subject/person.
  4758.  
  4759.                    The OK box HOTKEY is O
  4760.  
  4761.                    The CANCEL box HOTKEY is C
  4762.  
  4763.                                           Mark
  4764.  
  4765.                    Marks   the  current  MESSAGE you're  on.  This  is  
  4766.                    useful   if  you  need  to  hunt  down  a   message   
  4767.                    that   may   contain  information  related  to  the  
  4768.                    message  you're  reading.  After   you   find   the  
  4769.                    message,  click on restore  to  return   to   where  
  4770.                    you were. 
  4771.  
  4772.                                          Restore
  4773.  
  4774.                    Returns you to the LAST MARKED message.
  4775.  
  4776.                                          Search
  4777.  
  4778.                    Allows   you  to  do an IF  CONTAINED  within  text   
  4779.                    search  on  the messages.
  4780.  
  4781.                    You  have two options; Search the message   headers   
  4782.                    (TO,   FROM,   SUBJECT   fields)   or  search   the   
  4783.                    BODIES  of  the  messages.
  4784.  
  4785.                    You may use up to a 50 character search string.
  4786.  
  4787.                    When I find a match, I'll terminate the search  and  
  4788.                    place  you  on  the message. To resume the  search,   
  4789.                    select  the  search  option again and when asked to  
  4790.                    continue,   select  YES.  Selecting  NO will  allow  
  4791.                    you to reset  the  search  perimeters. 
  4792.  
  4793.                    I   do suggest that you MARK the  current  location   
  4794.                    before  beginning the search.
  4795.  
  4796.          Osiris SE         Technical Reference Manual        Page  66
  4797.  
  4798.                    All    the   options  listed  above  can  also   be   
  4799.                    accessed  by  special HOTKEYS. Use the ALT-H,  help  
  4800.                    key, to list  which  functions can be accessed  and  
  4801.                    what their HOTKEYS are.
  4802.  
  4803.                                         Broadcast
  4804.  
  4805.                    The  broadcast option allows you to send  the  same  
  4806.                    message to a  GROUP of individuals.
  4807.  
  4808.                    You have four methods of broadcasting a message:
  4809.  
  4810.                    1.  ALL.  Sends the message to everyone  listed  in   
  4811.                    the   user.bbs   file,  excluding  record  0,  your  
  4812.                    record. The  TO  field will have the users name  in  
  4813.                    it and NOT 'ALL'. 
  4814.  
  4815.                    I can't think of a GOOD reason to broadcast to  ALL  
  4816.                    users  when  the system bulletins would do the same   
  4817.                    thing  and  take less disk space.
  4818.  
  4819.                    2.  By Access Level. Sends the message to  everyone   
  4820.                    that  has access level XXXX or higher. You  specify  
  4821.                    the  access  level. 
  4822.  
  4823.                    This  could  be used in place of  the   ACCxxxx.BBS   
  4824.                    text  file.  It's more personal since it LOOKS like   
  4825.                    you   took  the time to type in a message  to  each  
  4826.                    person.   The   users   will  not  know  that   you  
  4827.                    broadcasted the message.
  4828.  
  4829.                    3.  By Control File. This uses a TEXT control  file   
  4830.                    that   lists the first and last name,  one  listing  
  4831.                    per line,  of  each person you want the message  to  
  4832.                    go  to.  You MUST have  the  first  AND  last  name  
  4833.                    listed, single names  will  not  work.  There is no  
  4834.                    limit to the number of names you  can  have  listed  
  4835.                    in the control file.
  4836.  
  4837.                    I'll  ask you for the name of the control file  and  
  4838.                    if   it   exists,  the  message will  be  saved  to   
  4839.                    each  individual  listed.
  4840.  
  4841.                    4.  Manual  Control. This works like  the   control   
  4842.                    file    except   you   ENTER  each  person's   name   
  4843.                    manually.  Again,  there  is no limit to the number  
  4844.                    of  people you can  send  to.  To   terminate   the   
  4845.                    process,  press  ENTER  without  entering a name.
  4846.  
  4847.  
  4848.  
  4849.  
  4850.  
  4851.          Osiris SE         Technical Reference Manual        Page  67
  4852.  
  4853.                    When  you select the broadcast option, you'll  fill   
  4854.                    out   your  message header like you normally  would  
  4855.                    except  for  the  TO  field,  I'll skip this  field   
  4856.                    and   fill  it  in  myself  once I find  out  which  
  4857.                    method  of  "BROADCAST"  you  want  to   use.   The  
  4858.                    rest  of the  process  is  just  like   entering  a  
  4859.                    message to an individual.
  4860.  
  4861.                                       Edit Current
  4862.  
  4863.                    This  allows you to edit the CURRENT message,   the   
  4864.                    body  only.
  4865.  
  4866.                    A   word   of  warning,  Osiris   uses   a   PACKED    
  4867.                    message   structure.  That means the  next  message  
  4868.                    begins   directly  following  the  last   BYTE   or   
  4869.                    CHARACTER  of  the  last  message.  That  means you  
  4870.                    can't  actual   EDIT  a   message   you've  already  
  4871.                    saved, it has a FIXED starting and ending  location  
  4872.                    in the message database.
  4873.  
  4874.                    When  you edit a message, I'm basically saving  the   
  4875.                    body  at a NEW location. The last or original  body  
  4876.                    is STILL in  your  message database and will remain  
  4877.                    there  until  CAT  packs the area.
  4878.  
  4879.                    Editing   a   LOT  of  message   can   cause   your    
  4880.                    message  databases to grow at an abnormal rate  and  
  4881.                    you should use  this function sparingly.
  4882.  
  4883.                    You may also HOTKEY this option by pressing 'A'.
  4884.  
  4885.                               Jumping To A Specific Message
  4886.  
  4887.                    You  can  jump  to a specific message  by  entering   
  4888.                    the  message NUMBER.
  4889.  
  4890.                    When   you  type  1,  2, 3, 4, 5, 6, 7, 8,  9,   or   
  4891.                    0,  a  small  window will open in the middle of the  
  4892.                    screen  and  you  may  complete the message number.   
  4893.                    When  you  press  return, I'll jump you directly to  
  4894.                    that message.
  4895.  
  4896.                                 Set Personal Msg Pointers
  4897.  
  4898.                    This   does   what I refer to  as  "LOCKING   DOWN"   
  4899.                    specific  messages.
  4900.  
  4901.                    If  you  select  this option,  I'll  scan  ALL  the  
  4902.                    messages   in   the   area   for   unread   message   
  4903.                    addressed to you.
  4904.  
  4905.  
  4906.          Osiris SE         Technical Reference Manual        Page  68
  4907.  
  4908.                    When  you  press the Left or Right arrow  keys,  or  
  4909.                    click on  them  with  your mouse, I'll move to  the  
  4910.                    NEXT   or  PRIOR  message  stored in the LOCK  DOWN  
  4911.                    queue, instead  of  the  normal next/prior. 
  4912.  
  4913.                    If  you  want to DISENGAGE the message LOCK  before   
  4914.                    you  read the LAST message, press ESC.
  4915.  
  4916.                               Conference Message Areas
  4917.  
  4918.               Having  CLICKED  your way to this section,  your  screen   
  4919.               will look almost identical to the one described above.
  4920.  
  4921.               All  the options listed above will also be available  to   
  4922.               you from this section, plus a few more.
  4923.  
  4924.               One option does work slightly different, EXIT. It  takes   
  4925.               you BACK to the Osiris Message Center instead of EXITING   
  4926.               Sphinx.
  4927.                                         Moderator
  4928.  
  4929.                    Lets  you  view messages in  DELAYED  POSTED  (REV)  
  4930.                    areas  and   either   POST  them  or  REJECT  them.   
  4931.                    HOTKEYS for POST  and  REJECT are: P  R
  4932.  
  4933.                    If  you  REJECT  a message, you'll have  to  supply   
  4934.                    the   reason.  A  menu will open in the  middle  of   
  4935.                    the   screen   listing  several   default  reasons.  
  4936.                    Move to the  one  you  want, using the mouse or the  
  4937.                    up/dn  arrow keys, and press  RETURN or  click  the  
  4938.                    left mouse button.
  4939.  
  4940.                    One  of  the default reasons is "Other." This  lets   
  4941.                    you   enter your OWN reason for the rejection.  The  
  4942.                    reason  will   be   limited  to  one  line  with  a  
  4943.                    maximum  length  of  50  characters.
  4944.  
  4945.                                        Mass Print 
  4946.           
  4947.                    This   functions  the same as the  previous  'Print   
  4948.                    Current  Message  To  A TEXT FILE' except you print   
  4949.                    a   RANGE   or   GROUP  of messages.  You  will  be  
  4950.                    required  to provide  the   name  of  the  file  to  
  4951.                    save  messages TO, as well  as  the   starting  and  
  4952.                    ending message numbers.
  4953.  
  4954.                    The   default  file name is "MSG.SAV"  and  can  be   
  4955.                    accepted   by   clicking the LEFT mouse  button  or   
  4956.                    pressing  RETURN.  
  4957.  
  4958.                    You can also use the ESC or Middle Mouse button  to  
  4959.                    clear  the field. Other normal editing keys may  be  
  4960.                    used.
  4961.          Osiris SE         Technical Reference Manual        Page  69
  4962.  
  4963.                                        Change Area
  4964.  
  4965.                    Allows   you  to SWITCH to a  different  Conference  
  4966.                    area.  A  SIDEKICK  type  window will open  listing   
  4967.                    the  available  areas. Move the inverted bar to the  
  4968.                    area you want and click the  LEFT  mouse button  or  
  4969.                    press  RETURN  to  select.   Pressing   the  MIDDLE  
  4970.                    mouse button or ESC will abort the change.
  4971.  
  4972.                    The  Change Area window will only display 20  areas  
  4973.                    at   a  time. If you have move than 20  areas,  you  
  4974.                    can scroll the  window  by moving the inverted  bar  
  4975.                    to  the  FIRST or  LAST  entry   and  pressing  the  
  4976.                    RIGHT  MOUSE   button.   Additional   areas    will   
  4977.                    scroll  up or down,  depending  on  whether  you're   
  4978.                    on   the FIRST or LAST entry. Holding   the   RIGHT   
  4979.                    mouse   button  DOWN will cause a  fast  continuous   
  4980.                    scroll.  You   can   also  scroll  the  window   by    
  4981.                    using   the  Up/Dn/PgUp/PgDn,HOME, or END keys.
  4982.  
  4983.                    The   Area change display also sets the  JUMP  NEXT  
  4984.                    Flag   ,  option  9 on the menu. Once I've set  the  
  4985.                    flags,  you   can  jump  to the next  message  area  
  4986.                    with UNREAD  messages  by  click on JUMP NEXT. Each  
  4987.                    time you change areas, with the  CHANGE option, the  
  4988.                    JUMP NEXT flags will be reset.
  4989.  
  4990.                                           Mark
  4991.  
  4992.                    Marks   the  current MESSAGE. It's  useful  if  you   
  4993.                    need   to   hunt down a message  that  may  contain  
  4994.                    information  related   to   the   message  you  are  
  4995.                    reading. After  you  find  that  message, click  on  
  4996.                    restore to return to where you were. 
  4997.  
  4998.                    I'll   save  the current AREA and if you   had   to   
  4999.                    change  areas to search for a message, I will place  
  5000.                    you back  in  the original message area.
  5001.  
  5002.                                          Restore
  5003.  
  5004.                    Returns you to the LAST MARKED message.
  5005.  
  5006.                                          Search
  5007.  
  5008.                    Allows   you  to  do a  IF  CONTAINED  within  text   
  5009.                    search   on  the messages. You  have  two  options;  
  5010.                    Search  the message  headers  (TO,  FROM,   SUBJECT   
  5011.                    fields)  or search  the  BODIES  of  the  messages.  
  5012.                    You may use up to a 50 character search string. You  
  5013.                    may  also  restrict  the  search  to  the   CURRENT   
  5014.                    message  area or ALL areas. Matching Messages  will  
  5015.                    be added to a LOCK DOWN queue.
  5016.          Osiris SE         Technical Reference Manual        Page  70
  5017.  
  5018.                    Once you have engaged the LOCK DOWN , pressing  the   
  5019.                    left   or   right arrow keys will move you  to  the  
  5020.                    NEXT  or  PRIOR  message that matched  your  search  
  5021.                    string.  If the  message  is in a  different  area,  
  5022.                    I'll automatically change areas.
  5023.  
  5024.                    If  you want to DISENGAGE the lock down BEFORE  you   
  5025.                    have   read all the messages in the  QUEUE,   press  
  5026.                    ESC.
  5027.                                    Forward Conference
  5028.  
  5029.                    Allows   you   to forward the current  message   to   
  5030.                    someone  else in one of the conference areas.
  5031.  
  5032.                                  Forward Message Center
  5033.  
  5034.                    Forward  the current message to another  individual  
  5035.                    on  the   system  and  have the  forwarded  message   
  5036.                    placed  in  the  message center. Edit Current
  5037.  
  5038.                    This  allows you to edit the CURRENT message,   the   
  5039.                    body  only.
  5040.  
  5041.                    A   word   of  warning,  Osiris   uses   a   PACKED    
  5042.                    message   structure.  That means the  next  message  
  5043.                    begins   directly  following  the  last   BYTE   or   
  5044.                    CHARACTER  of  the  last  message.  That  means you  
  5045.                    can't  actual   EDIT  a   message   you've  already  
  5046.                    saved, it has a FIXED starting and ending  location  
  5047.                    in the message database.
  5048.  
  5049.                    When  you edit a message, I'm basically saving  the   
  5050.                    body  at a NEW location. The last or original  body  
  5051.                    is STILL in  your  message database and will remain  
  5052.                    there  until  CAT  packs the area.
  5053.  
  5054.                    Editing   a   LOT  of  message   can   cause   your    
  5055.                    message  databases to grow at an abnormal rate  and  
  5056.                    you should use  this function sparingly.
  5057.  
  5058.                    You may also HOTKEY this option by pressing 'A'.
  5059.  
  5060.                               Jumping To A Specific Message
  5061.  
  5062.                    You  can  jump  to a specific message  by  entering   
  5063.                    the  message NUMBER.
  5064.  
  5065.                    When   you  type  1,  2, 3, 4, 5, 6, 7, 8,  9,   or   
  5066.                    0,  a  small  window will open in the middle of the  
  5067.                    screen  and  you  may  complete the message number.   
  5068.                    When  you  press  return, I'll jump you directly to  
  5069.                    that message.
  5070.  
  5071.          Osiris SE         Technical Reference Manual        Page  71
  5072.  
  5073.                                     Marking Received
  5074.                    Sphinx!  will  always  ASK  you  before  marking  a  
  5075.                    message  as  RECEIVED.
  5076.  
  5077.                                 Set Personal Msg Pointers
  5078.  
  5079.                    This   does   what I refer to  as  "LOCKING   DOWN"   
  5080.                    specific  messages.
  5081.  
  5082.                    If  you select this option, I'll scan ALL the areas   
  5083.                    for  unread message addressed to you.
  5084.  
  5085.                    When  you  press the Left or Right arrow  keys,  or  
  5086.                    click on  them  with  your mouse, I'll move to  the  
  5087.                    NEXT   or  PRIOR  message  stored in the LOCK  DOWN  
  5088.                    queue, instead  of  the  normal next/prior. If  the  
  5089.                    next  message  is  in a  DIFFERENT   area,  I  will  
  5090.                    automatically change areas.
  5091.  
  5092.                    If  you press HOME, it will take you to  the  FIRST  
  5093.                    message   in  the LOCK DOWN QUEUE for  the  CURRENT  
  5094.                    message AREA.
  5095.  
  5096.                    If   you  press END, it will take you to  the  LAST   
  5097.                    message   in  the  LOCK DOWN QUEUE for the  CURRENT   
  5098.                    message   AREA.  This allows you to SKIP over  some  
  5099.                    messages.
  5100.  
  5101.                    If  you  want to DISENGAGE the message LOCK  before   
  5102.                    you  read the LAST message, press ESC.
  5103.  
  5104.                                  Set Unread Msg Pointers
  5105.  
  5106.                    This  works  EXACTLY  like the  "Set  Personal  Msg   
  5107.                    Pointers"   except  it Locks Down on  ALL  messages  
  5108.                    you  have  NOT   read  yet, even if  they  are  NOT  
  5109.                    addressed to you personally. 
  5110.  
  5111.                                         Tag Line
  5112.  
  5113.                    Sphinx!  will always add an identification line  to   
  5114.                    any  message it saves.
  5115.  
  5116.                Sphinx EM/vx.xx * xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  5117.  
  5118.                           ----------------------------------------
  5119.  
  5120.                    xxxxxx  will contains 'Osiris Compatible Editor' or   
  5121.                    may  contain  text that you have selected to use in  
  5122.                    place  of  the default. 
  5123.  
  5124.  
  5125.  
  5126.          Osiris SE         Technical Reference Manual        Page  72
  5127.  
  5128.                    I've  included  a  file called  Tagline.ctl.   This   
  5129.                    file   contains some 150 odd taglines. You can  add  
  5130.                    new taglines  to it, maximum length of a tagline is  
  5131.                    50 characters.
  5132.  
  5133.                    Place   Tagline.ctl  in the Osiris  directory   and   
  5134.                    if   it  exists,  Sphinx will pull a  tagline  from  
  5135.                    this file  each  time  you enter a message. Once it  
  5136.                    has reach the end  of  the file, it will start over  
  5137.                    with the first tagline.
  5138.  
  5139.                                        Screen Clip
  5140.  
  5141.                    Sphinx!  supports CLIP to File using your mouse  if  
  5142.                    you're   at  the  main menu, message center or   in   
  5143.                    a  conference  area.
  5144.  
  5145.                    CLICK  the  RIGHT  mouse  button  to  trigger   the   
  5146.                    CLIP  function.
  5147.  
  5148.                    Move   the   mouse cursor to where  you  want   the   
  5149.                    CLIP  to  start  and press the LEFT mouse button to  
  5150.                    drop  the  CLIP  anchor. Move the mouse  cursor  to  
  5151.                    where you want the CLIP  to  end, you may not  move  
  5152.                    to  the LEFT of your anchor  or  above the  anchor,  
  5153.                    and press the RIGHT mouse button. 
  5154.  
  5155.                    As  you  move  your cursor, once  the  anchor   has   
  5156.                    been   dropped,  the area that WOULD be  considered  
  5157.                    as    part    of   the  CLIP  rectangle   will   be  
  5158.                    highlighted.
  5159.  
  5160.                    After  you  have pressed the  RIGHT  mouse  button,  
  5161.                    you'll  be  asked for the name of the file to  save  
  5162.                    the screen CLIP.  
  5163.  
  5164.                    The    default   is   Sphinx!.cut  and    can    be   
  5165.                    selected  by  pressing  RETURN or clicking the LEFT  
  5166.                    mouse  button.  If  the  file  already exists,  you  
  5167.                    will  have  the   option  of  APPENDING  to  it  or  
  5168.                    OVERWRITING it.
  5169.  
  5170.                    Using  CLIP is preferred over the " WRITE  to  TEXT  
  5171.                    File   "   option  if you only  need  PART  of  the  
  5172.                    message.
  5173.  
  5174.  
  5175.  
  5176.  
  5177.  
  5178.  
  5179.  
  5180.  
  5181.          Osiris SE         Technical Reference Manual        Page  73
  5182.  
  5183.                                     Dc Word(tm)
  5184.  
  5185.               DC   Word(tm)   isn't actual  an   individual   program,   
  5186.               it's  a   module  for  Message  entry  in  Sphinx!.   DC    
  5187.               Word(tm)   was  designed   specifically    for   message   
  5188.               entry    systems    found   in  CBIS,    BBS,   Mailers,   
  5189.               etc.  It has many, if not  more,  options  found in most  
  5190.               popular  word  processors. DC Word(tm)  has   a  default  
  5191.               left margin of one  and   a   right  margin  of 75.  The  
  5192.               margins   may   not  be  changed. When   entering  test,  
  5193.               I'll  automatically  wrap   when  you  exceed  the  75th  
  5194.               column.
  5195.  
  5196.               If    you   press <CR> then you'll move  to   the   next   
  5197.               line, if  one is  available, and the line you where   on  
  5198.               will  be   flagged   as  ENDING  with  a  HARD  CARRIAGE   
  5199.               RETURN. You   should  ONLY use  <CR> to format   columns   
  5200.               of   data  or  to signal paragraph changes. DC  Word(tm)   
  5201.               allows  up  to 161 lines of text,   seven    pages    or   
  5202.               about   13K.  There  are  other  systems   that   cannot   
  5203.               handle  messages exceeding 10K. At  the  bottom  of  the  
  5204.               screen  you'll  find  a  status    bar.   It  shows  the  
  5205.               current row, col., page, and the  number of lines  left,  
  5206.               excluding   the  current  line.  There    are    several  
  5207.               command   keys  available   and  pressing   ALT-H   will   
  5208.               display     a    help    screen   listing  them.   
  5209.  
  5210.                                         Commands
  5211.  
  5212.                    Items   beginning  with  (*)   designate   wordstar   
  5213.                    compatibility  
  5214.  
  5215.                    (*) Up Arrow Key or ^E - Move up a line. 
  5216.  
  5217.                    (*)  Dn Arrow Key or ^X - Move down a line  (cannot   
  5218.                    go  pass last line of text). 
  5219.  
  5220.                    (*)  Left Arrow Key or ^S - Move one  CHARACTER  to   
  5221.                    the left. 
  5222.   
  5223.                    (*)  Right Arrow Key or ^D - Move one CHARACTER  to   
  5224.                    the right.
  5225.   
  5226.                    (*) Ctrl - Left Arrow Key or ^A - Move one WORD  to   
  5227.                    the left. 
  5228.   
  5229.                    (*) Ctrl - Right Arrow Key or ^F - Move one WORD to   
  5230.                    the right. 
  5231.   
  5232.                    (*) HOME or ^Qs - Move to the start of the  current   
  5233.                    line. 
  5234.  
  5235.  
  5236.          Osiris SE         Technical Reference Manual        Page  74
  5237.  
  5238.   
  5239.                    (*)  END  or ^Qd - Move to the end of  the  current   
  5240.                    line. 
  5241.   
  5242.                    (*)   Ctrl-HOME  or ^Qr - Move to the  first  line,   
  5243.                    first  column of the message. 
  5244.  
  5245.                    (*) Ctrl-END or ^Qc - Move to the Last line,  first   
  5246.                    column of the message. 
  5247.  
  5248.                    Ins   -  Toggles Insert Mode on/off. Cursor becomes    
  5249.                    a  BLOCK when in insert Mode. 
  5250.   
  5251.                    (*)  DEL  or ^G - Delete the  character  under  the   
  5252.                    cursor, move rest of line back to fill hole. 
  5253.  
  5254.                    If you are at the end of the line, I'll look at the   
  5255.                    line below your current position and if I can  move   
  5256.                    text from that line to your current line, I will.
  5257.  
  5258.                    (*)  PgUp  or  ^R -  Move up a page or  to  Top  of   
  5259.                    document, which every comes first. 
  5260.  
  5261.                    (*) PgDn or ^C -  Move down a page or to Bottom  of    
  5262.                    document,  which every comes first. 
  5263.  
  5264.                    (*)  Ctrl-N    -  Split the line  at  the   current    
  5265.                    cursor  position. 
  5266.   
  5267.                    (*)  Ctrl-Y   - Delete the current line,  move  all   
  5268.                    text up a  line. 
  5269.   
  5270.                    (*) Ctrl-I   - Tab 
  5271.   
  5272.                    (*) BS       - Backspace delete. 
  5273.   
  5274.                    ESC      - Done editing, exit DC Word(tm). 
  5275.   
  5276.                    (*) Ctrl-B   - Reformat document. 
  5277.   
  5278.                    ALT-D    - Engage Dictionary.
  5279.  
  5280.                    ALT-J    - Jump to DOS. 
  5281.   
  5282.                    ALT-I    - Import Text file. 
  5283.   
  5284.                    ALT-X     - Delete from current position to end  of   
  5285.                    line. 
  5286.   
  5287.                    ALT-S     - Cursive Signature.
  5288.  
  5289.                    ALT-R    - Redraw Screen. 
  5290.   
  5291.          Osiris SE         Technical Reference Manual        Page  75
  5292.  
  5293.                    (*) ^KB  - Start Block Mark. 
  5294.   
  5295.                    (*) ^KK  - End Block Mark. 
  5296.   
  5297.                    (*)  ^KC  - Copy Marked text to line below  current   
  5298.                    location. 
  5299.   
  5300.                    (*) ^KY  - Delete Marked text. 
  5301.   
  5302.                    (*) ^KH  - Dissolve Block Marks (HIDE). 
  5303.   
  5304.                    (*) ^KW  - Write Marked text to a file. 
  5305.   
  5306.                    I'll  highlight  marked text in  reverse  video  to   
  5307.                    illustrate the first and last line in the block. 
  5308.   
  5309.                    (*)  ^U   - Undelete last line  deleted  with  ^Y,   
  5310.                    Delete  buffer will  hold the last 36 lines of text    
  5311.                    deleted  with ^Y.  Individually  deleted characters    
  5312.                    will  NOT  be saved in the undelete buffer. 
  5313.   
  5314.                    (*) ^T - Delete word. DC Word(tm) will start at the   
  5315.                    current cursor position and delete an entire  word.  
  5316.   
  5317.                    I'll use either; end of the line, a white space, or   
  5318.                    a punctuation mark to determine the end of a  word.   
  5319.                    If  you are at the END of the line to  start  with,   
  5320.                    WORDS  that will fit in the remaining space on  the   
  5321.                    next line will be pulled up to the current line.
  5322.  
  5323.                    ^V - Insert Blank line below current position. 
  5324.   
  5325.                    ALT - C - Access Cut section of CUT/PASTE. Requires   
  5326.                    Mouse. 
  5327.   
  5328.                    ALT  -  P  - Access  Paste  section  of  CUT/PASTE.   
  5329.                    Requires Mouse.
  5330.  
  5331.                    <- Del Key - Moves the cursor back a character  and   
  5332.                    deletes  the character at the new cursor  position.  
  5333.  
  5334.                    If  you're at the start of the line, I'll move  you   
  5335.                    to  the end of the line above you. 
  5336.   
  5337.                    Left  Mouse  Button - Active Mouse  Menu.  Requires   
  5338.                    Mouse. 
  5339.   
  5340.                    Right  Mouse Button - Active Quick  Jump.  Requires   
  5341.                    Mouse. 
  5342.   
  5343.                    All  functions  will  prevent you from going   pass    
  5344.                    the   last available  line. Should you attempt  it,   
  5345.                    the system will  BEEP at you. 
  5346.          Osiris SE         Technical Reference Manual        Page  76
  5347.  
  5348.                    F1 - Access calculator.
  5349.  
  5350.                    F2 - Access TEXT VIEWER.
  5351.  
  5352.                                      F1 - Calculator
  5353.  
  5354.                    Most  of the functions are fairly straight  forward  
  5355.                    except 'M' or Memory. 
  5356.  
  5357.                    If you press M, the CURRENT total will be placed in  
  5358.                    the CUT/PASTE buffer, lets you paste the total into  
  5359.                    your message using ALT-P. 
  5360.  
  5361.                    To EXIT the calculator, press ESC.
  5362.  
  5363.                                     F2 - Text Viewer
  5364.  
  5365.                    This is a windowed text viewer, similar to the  one  
  5366.                    found  in control.exe. The idea is to allow you  to  
  5367.                    bring up a text file for viewing without having  to  
  5368.                    exit the word processor. 
  5369.  
  5370.                    You may CUT text from the text window and PASTE  it  
  5371.                    into your messages. 
  5372.  
  5373.                    You  can  make Multiple CUTS and each cut  will  be  
  5374.                    appended onto the last CUT(s). The only restriction  
  5375.                    is  the total size of the CUTS cannot  exceed  4000  
  5376.                    bytes, the maximum size of the paste buffer. If you  
  5377.                    exceed 4000 bytes, the remaining text will be lost.
  5378.  
  5379.                    Once you have finished viewing or cutting text from  
  5380.                    the  text  window,  press ESC  to  return  to  work  
  5381.                    processing  mode.  Once you  have  re-entered  this  
  5382.                    mode, you can paste the text you CUT using ALT-P.
  5383.  
  5384.                    The  TEXT  VIEWER window should be able  to  handle  
  5385.                    text files in excess of 350,000 bytes. 
  5386.  
  5387.                                     Alt-D Dictionary 
  5388.   
  5389.                    ALT-D   gives you access to the  Osage  dictionary.    
  5390.                    You   should have  Osage.dic and Osage.idx  in  the   
  5391.                    same  directory. 
  5392.                                      Alt-J Jump To Dos 
  5393.   
  5394.                    This   uses  VMS to free up all  available  memory.    
  5395.                    The   current screen  and cursor positions will  be   
  5396.                    saved and restored  when you return.
  5397.  
  5398.                    If  I can't allocate a buffer to store  the   video   
  5399.                    screen, you'll get an error message and the Jump to   
  5400.                    DOS  will be aborted.
  5401.          Osiris SE         Technical Reference Manual        Page  77
  5402.  
  5403.                                     Ctrl-B Reformat 
  5404.   
  5405.                    After   a  heavy editing session, your  text  could   
  5406.                    look   choppy. This  really doesn't hurt  anything,   
  5407.                    but it's there if you want to use it. 
  5408.   
  5409.                                     Alt-I Import File 
  5410.   
  5411.                    Allows   you  to  import  text  files.   The   only    
  5412.                    restrictions placed on this function is the size of   
  5413.                    the  file. It must fit within the space you've  got   
  5414.                    left. I'll make  sure of that and when you run  out   
  5415.                    of space, I'll  quit importing the text.
  5416.  
  5417.                    Although  it's not a restriction, the length of the   
  5418.                    lines  in the file should be discussed. 
  5419.  
  5420.                    I'm  allowing  only 78 character  per  line  before    
  5421.                    either   wrapping or requiring  a   HARD   CARRIAGE   
  5422.                    return.  Should   the  file   contains  lines  that    
  5423.                    will  not  meet  this requirement,  I'll force   it    
  5424.                    by  placing  HARD CARRIAGE  returns in as needed. 
  5425.   
  5426.                    This means a file may not look like you  though  it   
  5427.                    would. 
  5428.   
  5429.                    If  you're  importing files that have lines  LONGER    
  5430.                    than  66 characters,  I  suggest  that you  attempt    
  5431.                    to  shorten  them so they'll display correctly. 
  5432.   
  5433.                    When you select the IMPORT option,  I'll ask you'll   
  5434.                    for  the file name. You can enter the  full  drive,   
  5435.                    path,  and  file name. You may use  the  wild  card   
  5436.                    characters; '?' and '*'. 
  5437.   
  5438.                    I'll  scan that directory and show you  a  list  of   
  5439.                    files matching the file name pattern you typed in. 
  5440.   
  5441.                    Move to the one you want and press return. 
  5442.   
  5443.                    When I start importing a file, I'll always check to   
  5444.                    see if you're on a BLANK line. If not,  I'll  start   
  5445.                    INSERTING  the text following  the  line you're on.   
  5446.                    I'll NEVER  over  write  any existing line of text.
  5447.  
  5448.                                 Alt-S, Cursive Signature
  5449.  
  5450.                    Press  ALT-S, enter the signature, and it  will  be   
  5451.                    converted   to  the  new  FONT format and  you  may   
  5452.                    place it  anywhere  in  the message by pressing the   
  5453.                    ALT-P for paste.
  5454.  
  5455.  
  5456.          Osiris SE         Technical Reference Manual        Page  78
  5457.  
  5458.                    You  can  also  block mark the signature, after you   
  5459.                    display  it  with ALT-P, and write it  to  a  MACRO   
  5460.                    file.
  5461.  
  5462.                                 ______          _              o 
  5463.                                   /   /        ' )   /         ' 
  5464.                                --/   /_  _      / / / o __. 
  5465.                               (_/   / /_</_    (_(_/ <_/  |_ 
  5466.                                                          (|
  5467.  
  5468.                                        Mouse Menu 
  5469.   
  5470.                    Pressing  the left mouse button will  activate  the   
  5471.                    mouse   menu.  This  is  slower  than   using   the    
  5472.                    keyboard commands but does lower the learning curve   
  5473.                    for new sysops. 
  5474.   
  5475.                    Once   the mouse menu is open, move to  the  option   
  5476.                    you  want,  or the  sub-topic, and press  the  left   
  5477.                    mouse  button. If it  is  an option (jump  to  dos)   
  5478.                    then it will be activated. 
  5479.   
  5480.                    If   it  is a sub-topic (BLOCK) a  pull  down  menu    
  5481.                    will  appear. Move  to  the  selection you want and   
  5482.                    press  the  left  mouse button. 
  5483.   
  5484.                    The  RIGHT mouse button can be used to back up.    
  5485.   
  5486.                                         Cut/Paste 
  5487.   
  5488.                    Cut/Paste requires that you have a mouse. 
  5489.   
  5490.                    Both  Cut and Paste can be activated using keyboard    
  5491.                    commands, ALT-C for CUT and ALT-P for Paste, or the   
  5492.                    mouse menu. 
  5493.                                            Cut 
  5494.   
  5495.                    Allows you to mark text on the screen and places it   
  5496.                    in   a buffer.  Cut  does NOT remove or delete  the   
  5497.                    marked   text.   It cuts  out  a   section  of  the   
  5498.                    screen and store  it  for  PASTE recall.
  5499.  
  5500.                    If you select this option,  your mouse cursor  will   
  5501.                    be placed in the middle of the screen. Move to  the    
  5502.                    upper  right hand corner of the section you want to   
  5503.                    cut and press the LEFT mouse button. This will drop   
  5504.                    the first anchor. 
  5505.   
  5506.                    Once you have dropped the first anchor, you may not   
  5507.                    go pass it, horizontally or vertically. 
  5508.   
  5509.  
  5510.  
  5511.          Osiris SE         Technical Reference Manual        Page  79
  5512.  
  5513.                    As  you  move, the text will be highlighted.   Once    
  5514.                    you   have  selected  all that you wanted  to  CUT,   
  5515.                    press the  RIGHT  mouse button. 
  5516.   
  5517.                    You  can  CUT  as little as one  character  or  the   
  5518.                    entire  screen. If  you  cut multiple screen lines,   
  5519.                    then  each  line  will  end with  a  hard  carriage   
  5520.                    return.  The   text will remain in the  cut  buffer   
  5521.                    until  you   select  to CUT more text. 
  5522.   
  5523.                                           Paste 
  5524.   
  5525.                    Paste  may  be selected from the mouse menu  or  by   
  5526.                    pressing ALT-P. 
  5527.   
  5528.                    If   you have CUT text, selecting the PASTE  option   
  5529.                    will   begin  placing the text in your  message  at   
  5530.                    your  current location. If you  are NOT  in  insert   
  5531.                    mode  and  you aren't at the end  of   the  message    
  5532.                    then   the   text that's already  there   will   be    
  5533.                    over written. 
  5534.   
  5535.                    You  can paste CUT text as many times as you  like.    
  5536.                    The   same  text will be available  until  you  CUT   
  5537.                    more. 
  5538.                                        Quick Jump 
  5539.   
  5540.                    You  can  active the Quick  Jump  by  pressing  the   
  5541.                    RIGHT  mouse   button. This allows you  to  QUICKLY    
  5542.                    jump  to  different spots in your message,  limited   
  5543.                    to locations  on the CURRENT screen. 
  5544.   
  5545.                    When  you press the RIGHT mouse button,  the  mouse   
  5546.                    cursor   will  be   placed in  the  middle  of  the   
  5547.                    screen.  Move to the  location you want to jump  to   
  5548.                    and press the LEFT mouse button. 
  5549.   
  5550.                    You  can't move pass the last line of text  or  the    
  5551.                    last column  on a particular line. Attempts to move   
  5552.                    pass the  LAST line  of  text will place you ON the   
  5553.                    last line.  Attempts  to move pass the last  column   
  5554.                    on  a  particular line will place you at  the  LAST   
  5555.                    column position for that line.
  5556.  
  5557.                                        Macro Keys
  5558.  
  5559.                    You have 9 scrap MACRO keys that can be  programmed   
  5560.                    to do all most anything you can do manually. 
  5561.   
  5562.                    Each MACRO can be triggered by pressing ALT-1  -  
  5563.                    ALT-9. 
  5564.   
  5565.  
  5566.          Osiris SE         Technical Reference Manual        Page  80
  5567.  
  5568.                    Providing  the  MACRO file for that key exists,  it    
  5569.                    will  be executed. 
  5570.   
  5571.                    Each   MACRO  has its own specific  command  file,   
  5572.                    MACx  with  x being  the   MACRO key in question. 
  5573.    
  5574.                    i.e. MACRO ALT-1  uses  the file name MAC1 
  5575.  
  5576.                    To   create a MACRO file, use any text  editor  and    
  5577.                    enter  what you  want. Normal text, not DC Word(tm)   
  5578.                    commands,  will   simply   be  imported  into  your   
  5579.                    message as TEXT. 
  5580.   
  5581.                    All  DC Word(tm) normal key functions, Ctrl-I  type   
  5582.                    keys,  can  be  triggered   by   entering  them  in   
  5583.                    character  format.  In  other words,  use some type   
  5584.                    of   program,  like  Char.exe,  to   generate   the   
  5585.                    character  representation of the ASCII  value   for   
  5586.                    the command. 
  5587.   
  5588.                    Certain   DC  Word(tm) commands do  not  use  ASCII    
  5589.                    characters  but   use IBM  Extended  Keyboard  Scan   
  5590.                    codes. 
  5591.  
  5592.                    e.g. The  Left,  Right, Up, and Down Arrow  keys. 
  5593.  
  5594.                    Using  these  commands requires a   TWO   character   
  5595.                    sequence.  You must prefix each command with  ASCII    
  5596.                    character 238. Following  the ASCII 238, enter  the   
  5597.                    character representation  for  the key.
  5598.  
  5599.  
  5600.  
  5601.  
  5602.  
  5603.  
  5604.  
  5605.  
  5606.  
  5607.  
  5608.  
  5609.  
  5610.  
  5611.  
  5612.  
  5613.  
  5614.  
  5615.  
  5616.  
  5617.  
  5618.  
  5619.  
  5620.  
  5621.          Osiris SE         Technical Reference Manual        Page  81
  5622.  
  5623.                    Below  is   a  chart listing each command  and  its    
  5624.                    ASCII  value, keeping in mind that you don't  enter   
  5625.                    the  ASCII value but  the ASCII character for  that   
  5626.                    value. 
  5627.   
  5628.                    01 - Pause for 1 second  
  5629.                    02 - Wait for a key press  
  5630.                    32 - Active Dictionary  
  5631.                    45 - ALT-X, Clear to EOL  
  5632.                    19 - ALT-R, Redraw Screen  
  5633.                    35 - ALT-H, Show Help  
  5634.                    36 - ALT-J, Jump to DOS  
  5635.                    23 - ALT-I, Import Text File  
  5636.                    82 - Toggle Insert on/off  
  5637.                    83 - DEL, Black hole delete  
  5638.                    77 - Right Arrow key, move right one character.  
  5639.                    75 - Left Arrow Key, move left one character.  
  5640.                    115 - Ctrl-Left Arrow Key, move left a word.  
  5641.                    116 - Ctrl-Right Arrow Key, move right a word.  
  5642.                    73 - PgUp  
  5643.                    81 - PgDn  
  5644.                    119 - Top of Document  
  5645.                    117 - End of Document  
  5646.                    72 - Up Arrow  
  5647.                    80 - Dn Arrow  
  5648.                    79 - Goto End of Line  
  5649.                    71 - Goto Start of Line 
  5650.  
  5651.                    There's  no  limit to the size of the  MACRO  file.    
  5652.                    Since there's no size restriction on a MACRO, there   
  5653.                    is NO need  to allow MACRO chaining. 
  5654.   
  5655.                    NOTE: Although you may activate the dictionary  and   
  5656.                    the  import  file  functions, you  may  not  supply   
  5657.                    file names nor  dictionary input. The  MACRO   will   
  5658.                    continue   to   execute   when   the  function  has   
  5659.                    completed its task. 
  5660.  
  5661.                                        Color
  5662.  
  5663.               You  can  change  or set the primary  screen  colors  in   
  5664.               Sphinx  with the program SColor.exe. Move Scolor.exe  to   
  5665.               the directory that contains the display.dat file.
  5666.  
  5667.               Run  scolor,  no command line  arguments  required,  and   
  5668.               follow  the  instructions  on the screen.  
  5669.  
  5670.  
  5671.  
  5672.  
  5673.  
  5674.  
  5675.  
  5676.          Osiris SE         Technical Reference Manual        Page  82
  5677.                     
  5678.                                 File Subsystem
  5679.  
  5680.          The HELP file for the File Menu, FILEHELP.(ASC/MMU/ANS), must   
  5681.          be in the Osiris text support directory. 
  5682.  
  5683.                               Upload/Download File(s)
  5684.  
  5685.               I'll  allow  you download a file from any  file  area  ,   
  5686.               providing  you have access, even if that file is NOT  in   
  5687.               the current area. 
  5688.  
  5689.               To do this with a reasonable degree of  speed,  I use  a    
  5690.               special  secondary  indexing system  that  will  catalog    
  5691.               all   the  files  on your system,  upload  and  download   
  5692.               directories.   I  will use the individual  PRIMARY  file   
  5693.               listings in each area to build the secondary index.
  5694.  
  5695.                                         Files.idx
  5696.  
  5697.                    Files.idx   contains   the  name(s)  of  the  files    
  5698.                    along  with  a pointer to a record in files.dat. 
  5699.  
  5700.                                         Files.dat
  5701.  
  5702.                    Files.dat  contains  all the information about  the   
  5703.                    file    that  would  normally  be  found   in   its   
  5704.                    files.qbs. 
  5705.                                        Dl_area.idx
  5706.  
  5707.                    Dl_area.idx  contains pointers to the START of each    
  5708.                    Download directory in the files.dat file. 
  5709.  
  5710.  
  5711.          When  you  UPLOAD a new file, I'll automatically  update  the   
  5712.          secondary  indices.  Right now this serves no  other  purpose   
  5713.          than  to prevent duplicate uploads that may come along before    
  5714.          you move the file to a download directory. 
  5715.  
  5716.                    New    uploads   will   NOT  be    available    for   
  5717.                    downloading UNTIL you move them to a download  area   
  5718.                    via FAM.
  5719.  
  5720.               When  you  adopt orphans, delete, or move files via  FAM    
  5721.               you'll need to REINDEX or the pointers will   be off and    
  5722.               the  files   cannot  be   downloaded.   FAM     "SHOULD"    
  5723.               automatically  call  Cat when you perform any  operation    
  5724.               that  may  affect the download status of any file. 
  5725.  
  5726.                    You   may  SPECIFICALLY  request  cat  to    
  5727.                    reindex  the  file  areas  by  using  the   
  5728.                    command   line   CAT  B  .   The    other   
  5729.                    functions   of  CAT  will   be   bypassed  
  5730.                    by this request.
  5731.          Osiris SE         Technical Reference Manual        Page  83
  5732.  
  5733.               The   NEW  upload  search and SEARCH  function  use  the    
  5734.               secondary indexing  system to speed up operations and to    
  5735.               decrease  the pounding your hard drive takes.  
  5736.  
  5737.                                 Wildcard Characters
  5738.  
  5739.               Unlike    WildCAT!  and  Pcboard,  which  also    allows    
  5740.               downloading  from  any directory,  I'll  allow  wildcard   
  5741.               characters in  file names and allow you to restrict  the   
  5742.               search to the current area or system wide. 
  5743.  
  5744.                                      Advantages
  5745.  
  5746.               A) The  number  of files that you can download during  a   
  5747.               single batch transfer is 40. 
  5748.  
  5749.               B)  The files can be in any combination of  file  areas.  
  5750.  
  5751.               C)  File verifications, for downloading, is very fast.  
  5752.  
  5753.               D)  File  duplicate checking, uploading, is  very  fast.  
  5754.   
  5755.               E)  Checking   a  CD-ROM    drive     for   duplicates,    
  5756.               searching,  and  new uploads is  not a  problem.  
  5757.   
  5758.               F)  Because of the reduction in head movement, your hard   
  5759.               drive will last a lot longer.
  5760.  
  5761.                                     Disadvantage
  5762.  
  5763.               There  is  one, the additional disk space  required  for    
  5764.               the  secondary   indexing  system, roughly   167   bytes    
  5765.               per file. This is offset, as  least  I believe it is, by   
  5766.               reduced head movement. 
  5767.                                      File Queue
  5768.  
  5769.               The  names  of ALL download file(s) will be held  in   a    
  5770.               file  queue.  The  method  of selecting the files,   Tag    
  5771.               or download,  doesn't  matter.  
  5772.  
  5773.               Each  listing contains the file name,   area,   complete   
  5774.               download   path, IF the file should be counted  in   the    
  5775.               user's record,  and the file size. 
  5776.  
  5777.               Since   I  have stored the  file(s)  in   a   QUEUE,   a    
  5778.               failed  download   can be restarted  without  having  to    
  5779.               RESELECT  the files. 
  5780.  
  5781.                              Defining A File Area
  5782.  
  5783.          You  must define each file area, use OSM, before it  can  be   
  5784.          accessed from Osiris.
  5785.  
  5786.          Osiris SE         Technical Reference Manual        Page  84
  5787.  
  5788.          Select the FILE option from OSM and then select the Edit sub-  
  5789.          option.  Move to the last file area you've defined and  press   
  5790.          the  C)lone key and then press END, located on  your  keypad.    
  5791.          This  will  move you to the NEWLY created board. Press  E  to   
  5792.          edit the record.
  5793.  
  5794.                                      Area Name
  5795.  
  5796.               Area  Name  is the text name you want displayed  to  the   
  5797.               caller.  I  don't  use  this  name  for  anything,  it's   
  5798.               strictly for human consumption.  
  5799.                
  5800.                                     Access Level
  5801.  
  5802.               The  access level, 1 - 32722, required to get  into  the   
  5803.               area.  If you don't  have access, the area will  not  be   
  5804.               displayed.
  5805.                                  Area Access Flags
  5806.  
  5807.               Area  Access  Flags allows you to sub-divide  an  access   
  5808.               level by requiring specific flags to be on or off.  
  5809.  
  5810.                                    Download Path
  5811.  
  5812.               The  full  drive  and path to  the  actual  downloadable   
  5813.               FILES. 
  5814.  
  5815.               e.g. c:\general\
  5816.  
  5817.               This should point the drive and directory that  contains   
  5818.               the physical files  for this area.
  5819.  
  5820.               I do NOT validate directories. If the directory does NOT   
  5821.               exist, strange things can happen.
  5822.  
  5823.                                  Download Files.qbs
  5824.  
  5825.               The  full drive and path to the FILES.QBS  type  listing   
  5826.               that  contains the list of files that can be  downloaded   
  5827.               from the area. 
  5828.  
  5829.               e.g. c:\general\
  5830.  
  5831.               If  the  path defined in the Download Path and  the  one   
  5832.               defined  in the Download Files.qbs isn't the same,  I'll   
  5833.               assume   the  area's on a NON-WRITEABLE drive.
  5834.  
  5835.  
  5836.  
  5837.  
  5838.  
  5839.  
  5840.  
  5841.          Osiris SE         Technical Reference Manual        Page  85
  5842.  
  5843.                                   Cd-Rom Or Worm Drives
  5844.  
  5845.                    The last TWO definitions are very important if  you   
  5846.                    are  defining a file  area that's located on a  CD-  
  5847.                    ROM or WORM Drive. You MUST make a subdirectory  on   
  5848.                    your  MFM/RLL/ESDI  hard drive  for  the  "Download   
  5849.                    files.qbs." I'll attempt to write to the  files.qbs   
  5850.                    file  in  that sub-directory following  uploads  or   
  5851.                    downloads and that requires a writeable drive. Your   
  5852.                    "Download  path" should point to the  directory  on   
  5853.                    the CD-ROM or WORM drive.
  5854.  
  5855.                              File Not Found, But It Exists!
  5856.  
  5857.                    If  you  get a "FILE NOT FOUND"  message  when  you   
  5858.                    enter a file name, no wild card characters, but you   
  5859.                    KNOW that file is in the current area then you need   
  5860.                    to do two things.
  5861.  
  5862.                    To eliminate the possibility that FAM messed up  or   
  5863.                    that  the index itself has been damaged, run CAT  B   
  5864.                    and try again.
  5865.  
  5866.                    If  that  does not fix the problem  then  you  have   
  5867.                    duplicate download areas, i.e., the same   physical   
  5868.                    sub-directory and the same files.qbs for more  than   
  5869.                    one file area.
  5870.  
  5871.                    You  CAN  have multiple file areas using  the  same   
  5872.                    physical  sub-directory,  but each file  area  MUST   
  5873.                    have a unique files.qbs structure.
  5874.  
  5875.                                     Upload Path
  5876.  
  5877.               The full drive and path pointing to a temporary  storage   
  5878.               area for files uploaded to this area.
  5879.  
  5880.               The upload path should NOT be the same as the  "Download   
  5881.               Path."
  5882.                                    The Help Menu
  5883.  
  5884.               "The  Help Menu" is the name of the FULL Help  menu  for   
  5885.               the area.
  5886.  
  5887.               You  should NOT list the extension and the file must  be   
  5888.               in the text support directory.
  5889.  
  5890.               You can use one menu for ALL areas, different menus  for   
  5891.               each area, or any combination you chose.
  5892.  
  5893.  
  5894.  
  5895.  
  5896.          Osiris SE         Technical Reference Manual        Page  86
  5897.  
  5898.                                    Dnl Files Name
  5899.  
  5900.               The name of the file that will hold the listings for all   
  5901.               the  files  in the area, the default  being  FILES.  You   
  5902.               should  NOT list the extension and I'll add .QBS to  it.  
  5903.  
  5904.               This  allows you to combine different areas in the  same   
  5905.               physical  sub-directory and logically divide  them  with   
  5906.               different "DNL Files Name." 
  5907.  
  5908.               Although this is allowed, I would discourage it  because   
  5909.               of the limited number of files that FAM can handle,  750   
  5910.               files  per area,  and because DOS will drastically  slow   
  5911.               down in proportion to the number of files.
  5912.  
  5913.                                    Upl Files Name
  5914.  
  5915.               The name of the file that will hold the listings for all   
  5916.               NEW  uploads for the area, the default being FILES.  You   
  5917.               should NOT list the extension, I'll add .QBS.
  5918.  
  5919.               You  can, in fact it is desirable, use the  same  upload   
  5920.               directory and the same "UPL Files Name" for all areas. 
  5921.  
  5922.               Callers  seldom upload in the correct directory and  you   
  5923.               will usually have to MOVE the file anyway. This makes it   
  5924.               easier to work with if ALL uploads are grouped.
  5925.  
  5926.                                  Free Download Area
  5927.  
  5928.               This means downloads from this area do not get  recorded   
  5929.               in  the users record. They just didn't happen as far  as   
  5930.               ratios and  download limits are concerned. 
  5931.  
  5932.                                  Application Flags
  5933.  
  5934.               These  flags can be used by just about any program  that  
  5935.               needs  YES/NO or ON/OFF switches to indicate whether  or  
  5936.               not  it should do whatever it is the program does  to  a   
  5937.               specific  file  area.  Read the  documentation  for  the  
  5938.               application you're going to use, it will tell you if  it  
  5939.               requires a flag or not.
  5940.  
  5941.               So   far   only  one  external  application   uses   the  
  5942.               application flags, CAT.EXE.
  5943.  
  5944.               The  application  flag field works just like  the  other  
  5945.               flag fields in Osiris.
  5946.  
  5947.               In OSM the flag field is represented by a string of  0's  
  5948.               and 1's. 0 (zero) indicates the flag is off and 1  (one)  
  5949.               indicates the flag is on.
  5950.  
  5951.          Osiris SE         Technical Reference Manual        Page  87
  5952.               
  5953.               Flags are numbered 1 to 16 from left to right.
  5954.  
  5955.               E.g.
  5956.  
  5957.               0000000000000000
  5958.               1234567891111111
  5959.                        0123456
  5960.  
  5961.  
  5962.                                 Command Key Options
  5963.  
  5964.               The  remainder  of  the  file  board  definition  record   
  5965.               pertains  to selecting command keys, access levels,  and   
  5966.               command key flags.
  5967.  
  5968.               Commands you do not want to use, set the access level to   
  5969.               32001 and use a space as the command key.
  5970.  
  5971.                                        Area Change 
  5972.   
  5973.                    A  list  of available file areas,  those  you  have   
  5974.                    access  to, will be displayed.  You can  enter  the   
  5975.                    number  of the area you want or press   <Enter>  to   
  5976.                    abort the area change.
  5977.  
  5978.                    Another  way of changing areas, once you  know  the   
  5979.                    system, is to ENTER the area number on the  command   
  5980.                    line and press RETURN.
  5981.  
  5982.                    e.g.
  5983.  
  5984.                    xxx minutes Remaining Command ? 12 <ENTER>
  5985.  
  5986.                    You'll jump DIRECTLY to file area 12.
  5987.  
  5988.                                     Alternate Area Listing
  5989.  
  5990.                         Given  the maximum length of an area  name,  I   
  5991.                         can  only display the list of available  areas   
  5992.                         in a two columns format.
  5993.  
  5994.                         If  you  would rather custom design  your  own   
  5995.                         display,     create     a     file      called   
  5996.                         "FDISPLAY.MMU/ASC/ANS"  and  place it  in  the   
  5997.                         TEXT support directory.
  5998.  
  5999.                         If  this  file exits, I'll display  it  rather   
  6000.                         than the dual column listing.
  6001.  
  6002.                         Keep  in mind that this is a simple text  file   
  6003.                         and I can not control area displays by  access   
  6004.                         level.  If you want that, you'll have  to  use   
  6005.                         SPL/I and control the display yourself.
  6006.          Osiris SE         Technical Reference Manual        Page  88
  6007.  
  6008.  
  6009.                                          Log Off
  6010.  
  6011.                    A  graceful  way  to hang up  with  the  option  of   
  6012.                    leaving a message, to the sysop. Logging off  using   
  6013.                    the  log off command is not required  and  dropping   
  6014.                    carrier will not harm anything.
  6015.  
  6016.                                        File Search 
  6017.   
  6018.                    Lets you enter a search string, NO wild cards.  The   
  6019.                    system  will  display  the area and  file  name  of   
  6020.                    matching files. 
  6021.  
  6022.                    I will display a file called  "Search.asc/mmu/ans."   
  6023.                    It   should   contain  instructions  on   what   is   
  6024.                    acceptable. A default search.mmu file is included. 
  6025.  
  6026.                    The search will allow you to TAG any MATCHING files   
  6027.                    for Batch Downloading.
  6028.  
  6029.                    The  search does NOT stop with the  first  matching   
  6030.                    file,  but it'll continue to search  ALL  available   
  6031.                    areas.
  6032.  
  6033.                    You  can abort the search by pressing Ctrl-K or  by   
  6034.                    selecting Q when a match is found.
  6035.  
  6036.                                           Kill 
  6037.   
  6038.                    Permits   you  to  kill a  file.    Be  careful  of    
  6039.                    this  command.  Do not  give callers access  to  it    
  6040.                    unless  you know and trust them.   (Knowing   where   
  6041.                    their children go to school helps too!)
  6042.  
  6043.                    I don't allow wild  card  characters  to  be   used    
  6044.                    in   the  kill file name.  Only you are allowed  to   
  6045.                    kill more than  2 files per  call.  After the  two-  
  6046.                    file  limit, the  caller  is NOT  allowed  to  kill    
  6047.                    any  more files. 
  6048.                                         Main Menu 
  6049.   
  6050.                    Takes you back to the Main Menu.
  6051.  
  6052.                    If  you  used an SPL/I command to  enter  the  file   
  6053.                    area,  takes  you BACK to the  SPL/I  command  file   
  6054.                    instead of the main menu.
  6055.  
  6056.                                      Quick File List 
  6057.   
  6058.                    Displays only the names of  the files in that  area   
  6059.                    along with their  file size and description.  
  6060.  
  6061.          Osiris SE         Technical Reference Manual        Page  89
  6062.  
  6063.                                      Full File List 
  6064.   
  6065.                    Displays the  files available  for  downloading  in    
  6066.                    the  current  File  Area  along  with  file  dates,   
  6067.                    descriptions, times downloaded, transfer time,  who   
  6068.                    downloaded it last, when it was last download,  who   
  6069.                    uploaded it, and file sizes.
  6070.  
  6071.                                     List In Reverse Order
  6072.  
  6073.                         Both  the QUICK file list and FULL  file  list   
  6074.                         will  allow you to LIST the files  in  REVERSE   
  6075.                         Order. 
  6076.  
  6077.                         *IF*  you  have FULL help turned  on  OR  have   
  6078.                         elected to use HOTKEYS, I'll ask if you'd like   
  6079.                         the list in reverse order. The default is N)o.
  6080.  
  6081.                         Once  you have turned HELP down a  level,  the   
  6082.                         prompt  is skipped, but may still be used  via    
  6083.                         COMMAND stacking.
  6084.  
  6085.                         e.g. L - 
  6086.  
  6087.                                           List Mask
  6088.  
  6089.                         Both  the  QUICK file list and the  FULL  file   
  6090.                         list commands also allow a LIST mask. You  can   
  6091.                         enter  part  of the file name and  ONLY  those   
  6092.                         files matching will be shown. This is a  SLIDE   
  6093.                         type match and NO wildcard characters, * or ?,   
  6094.                         are allowed.
  6095.  
  6096.                         Like  the  reverse order option, if  you  have   
  6097.                         FULL help turned on or you're using HOTKEYS, I   
  6098.                         will ask for a mask or RETURN for ALL files.
  6099.  
  6100.                         Once  the  Help Level has been turned  DOWN  a   
  6101.                         notch  or two, the prompt will  disappear  but   
  6102.                         can still be used via command stacking.
  6103.  
  6104.                         e.g.  L BA
  6105.  
  6106.                         List only files starting with 'BA'
  6107.  
  6108.                         e.g. L - BA
  6109.  
  6110.                         List  files  in REVERSE order  and  then  ONLY   
  6111.                         those files starting with 'BA'
  6112.  
  6113.  
  6114.  
  6115.  
  6116.          Osiris SE         Technical Reference Manual        Page  90
  6117.  
  6118.                                          Upload 
  6119.   
  6120.                    Lets  you  send a file to the  system.    When  you   
  6121.                    select upload,  I'll check the  free space on   the   
  6122.                    hard   drive   where the  uploaded  file  will   be   
  6123.                    placed.  If  there is less than one Mbyte  of  free   
  6124.                    space, I'll not  allow the  upload.  You'll be told   
  6125.                    why  I  could  not allow the upload  and  an  error   
  6126.                    message will be placed in the BBS log file.
  6127.  
  6128.                    The first question I'll ask is "FOR SYSOP EYES ONLY   
  6129.                    ?". If you indicate that it is, a forward slash '/'   
  6130.                    will  be appended to the START of  the  description   
  6131.                    field.
  6132.  
  6133.                    If  you answer NO AND have the access, I'll ask  if   
  6134.                    the file is to be password protected. 
  6135.  
  6136.                    If  you  have ACCESS you can also PASSWORD  KILL  a   
  6137.                    file.  Meaning  it is password protected  and  I've   
  6138.                    been instructed to DELETE the file after its   been   
  6139.                    downloaded.
  6140.  
  6141.                    You can't intermix FOR SYSOP EYES ONLY and PASSWORD   
  6142.                    protected files.
  6143.  
  6144.                    I'll  ask  you,  following  the  description  field   
  6145.                    prompt,  if you would like to post a message to  go   
  6146.                    along with the file. You can post a message in  any   
  6147.                    area providing the following  conditions are met: 
  6148.   
  6149.                    1. You have the area selected. 
  6150.   
  6151.                    2. You  have access to the "enter message"  command    
  6152.                    for     that   area. 
  6153.   
  6154.                    I  do FOUR primary tests to ensure the upload  file   
  6155.                    name is a valid DOS file name. 
  6156.                    
  6157.                    1.  Entire file name is tested to see if  it  falls   
  6158.                    within the twelve character DOS limit. 
  6159.                    
  6160.                    2. The file extension, if one is used, is tested to   
  6161.                    make    sure it doesn't exceed the three  character   
  6162.                    DOS limit.
  6163.  
  6164.                    3.  A  test is run to ensure that only  ONE  period   
  6165.                    exists     in the file name. ie. Dos.zip is  valid,   
  6166.                    Dos.zip.zip is not valid.
  6167.  
  6168.                    4.  If no file extension is used, test one is rerun  
  6169.                    with an eight character limit.
  6170.  
  6171.          Osiris SE         Technical Reference Manual        Page  91
  6172.  
  6173.                                    File Duplication System 
  6174.   
  6175.                         You MUST tell me what file(s) you are  planing   
  6176.                         to upload before  uploading, even  when  using   
  6177.                         a   batch   protocol.  This  allows  the  File   
  6178.                         Duplication  system to  systematically  search   
  6179.                         all upload and download areas, using the Btree   
  6180.                         indexing  system.  Should a match  occur,  the   
  6181.                         file will not be allowed. 
  6182.  
  6183.                         You do have the option of specifying the  TYPE   
  6184.                         of  search. In your NODEx.INI, you'll  find  a   
  6185.                         option labeled DUPLICATE SEARCH TYPE.
  6186.  
  6187.                         Osiris  currently supports two types,  TYPE  0   
  6188.                         and TYPE 1.
  6189.  
  6190.                         Type  0  search means an EXACT match.  If  the   
  6191.                         file name is "BRAND.ZIP," then you'll have  to   
  6192.                         already have BRAND.ZIP on the system.
  6193.  
  6194.                         Type  1  search means to find the  first  file   
  6195.                         name,  if it exists, equal to or greater  than   
  6196.                         the upload file name, minus the extension.
  6197.  
  6198.                         If  the  upload file name is  BRAND.ZIP,  then   
  6199.                         I'll look for anything that will match BRAND.  
  6200.  
  6201.                         E.g., Brand.arj, Brand.lzh, etc. would match. 
  6202.                          
  6203.                                          Badfiles.bbs 
  6204.                
  6205.                         You  may  want  to  set  up  a  control  file,   
  6206.                         badfiles.bbs,  that can be used to FILTER  out   
  6207.                         certain files.
  6208.  
  6209.                         Badfiles.bbs is a text file that contains  one   
  6210.                         file   name   per  line.  You   should   place   
  6211.                         Badfiles.bbs in the Osiris= directory.
  6212.  
  6213.                         I  don't place a LIMIT on the number of  files   
  6214.                         you can list in Badfiles.bbs. But, the time it   
  6215.                         takes me to check the upload name against  the   
  6216.                         contents   of   Badfiles.bbs   will   increase   
  6217.                         proportionately  to the number of  file  names   
  6218.                         you've listed.
  6219.  
  6220.                         Lotus.arj 
  6221.                         Dbaseiv.zip
  6222.  
  6223.                         If the above lines were in the Badfiles.bbs, I   
  6224.                         would  prevent  anyone from using  those  file   
  6225.                         names during an upload. 
  6226.          Osiris SE         Technical Reference Manual        Page  92
  6227.  
  6228.  
  6229.  
  6230.                    (G)oodbye After Batch, (A)bort, Or (S)tart Transfer ? 
  6231.   
  6232.                    Gives  you the  option  of aborting or if it  is  a    
  6233.                    large   transfer,  to   automatically    disconnect    
  6234.                    after   the  file transfer.   
  6235.  
  6236.                    If  you  select the auto-disconnect, I'll give  you   
  6237.                    10   seconds   to  abort  the   disconnect   before     
  6238.                    severing  the connection.   This works not only  on   
  6239.                    uploads, but also on downloads. 
  6240.                     
  6241.                                    Archive Integrity Check
  6242.  
  6243.                         Following the upload, I'll verify the  archive   
  6244.                         by   extracting   the  contents  to   a   work   
  6245.                         directory. 
  6246.                                          Virus Check
  6247.  
  6248.                         If the file passed the archive integrity check    
  6249.                         and  you have virus checking  activated,  I'll   
  6250.                         call  SCAN.EXE to scan the files for over  300   
  6251.                         known   virus  infections.  If  a   virus   is   
  6252.                         detected,  I'll  notify you, the  caller,  and   
  6253.                         then delete the infected upload.
  6254.  
  6255.                         Scan.exe MUST be in a PATHED directory. If  it   
  6256.                         is not, you will lose uploads. DOS will return   
  6257.                         the error code used by SCAN if it cannot  find   
  6258.                         SCAN.EXE. 
  6259.  
  6260.                    Providing everything was OK, I'll display a brief 2   
  6261.                    line  message  showing the number of  files  you've   
  6262.                    uploaded along with the number of Kilo-Bytes.
  6263.  
  6264.                    If  the protocol was one of mine, the  AVERAGE,  in   
  6265.                    case  of batch transfers, throughput will  also  be   
  6266.                    shown.
  6267.  
  6268.                    I'll  also post a message, in the  message  center,   
  6269.                    thanking you for the upload(s). Each file  uploaded   
  6270.                    will be listed in the message.
  6271.  
  6272.                    If the file transfer did NOT go, you will have  the   
  6273.                    option  of RETRYING without having to RE-ENTER  any  
  6274.                    of  the file upload information.
  6275.  
  6276.  
  6277.  
  6278.  
  6279.  
  6280.  
  6281.          Osiris SE         Technical Reference Manual        Page  93
  6282.  
  6283.                                         Download 
  6284.   
  6285.                    Lets you receive  file(s) from  the system. 
  6286.  
  6287.                    All  Dos  wild card characters, * and  ?,  will  be   
  6288.                    supported and expanded to match files in your  file   
  6289.                    list.
  6290.                                       File Ratio Limits
  6291.  
  6292.                         When  you   set the  limits for   each  access   
  6293.                         level,       you will supply a  File Ratio for   
  6294.                         that  level. This ratio  works off  the number    
  6295.                         of  files   downloaded versus the  number   of   
  6296.                         files  uploaded.  An 8  to 1 ratio means   the    
  6297.                         caller  is  allowed  8 files   downloaded  for   
  6298.                         every 1 file  uploaded, while  10 to 1   means   
  6299.                         10  files downloaded for every 1 up loaded.
  6300.  
  6301.                         The   ratio  also sees  a 0 as  a 1,  so   new             
  6302.                         callers will be allowed to download.   Since a   
  6303.                         zero  is the same as  a 1, once  a new  caller   
  6304.                         has   reached  his file ratio limit,  he  will   
  6305.                         have to upload two files to clear it. 
  6306.  
  6307.                         When  a  caller has exceeded  his file  ratio,    
  6308.                         I'll not allow him to  download any more files   
  6309.                         until   he has corrected  the  problem.    The    
  6310.                         caller can  do  that by uploading  a file.  If   
  6311.                         the   caller attempts to download and  he  HAS    
  6312.                         exceeded  his   Ratio  limit, the   text  file   
  6313.                         "RATIO.ASC/MMU/ANS" will be shown.
  6314.  
  6315.                         To   disable  the  file ratio  warning  system    
  6316.                         for  any  access level, just define the  ratio   
  6317.                         as 0 (Zero). 
  6318.  
  6319.                                     Kilo-Byte Ratio Limits
  6320.  
  6321.                         When  you   set the  limits for   each  access   
  6322.                         level,  you will supply a  Kilo-Byte Ratio for   
  6323.                         that  level. This ratio  works off  the number    
  6324.                         of  files   downloaded versus the  number   of    
  6325.                         files  uploaded.  An 8  to 1 ratio means   the    
  6326.                         caller  is  allowed  8  Kilo-bytes  downloaded   
  6327.                         for every 1 Kilo-Byte uploaded.
  6328.  
  6329.                         When a  caller has exceeded  his K-Byte ratio,    
  6330.                         I'll not allow him to  download any more files   
  6331.                         until   he has corrected  the  problem.    The    
  6332.                         caller can  do  that by uploading  a file.  If   
  6333.                         the   caller attempts to download and  he  HAS    
  6334.                         exceeded  his   Kilo-Byte  Ratio   limit,  the    
  6335.                         text file "BYTE.ASC/MMU/ANS" will be shown.
  6336.          Osiris SE         Technical Reference Manual        Page  94
  6337.  
  6338.                         To  disable  the  Kilo-Byte ratio system   for    
  6339.                         any  access level, just define the ratio as  0   
  6340.                         (Zero). 
  6341.  
  6342.                                  Password Protected Downloads
  6343.  
  6344.                         The unique aspect here is that the AREA itself   
  6345.                         is  not  password protected. The  actual  file   
  6346.                         itself can be password protected.
  6347.  
  6348.                         If  a caller attempts to download  a  password   
  6349.                         protected  file, he MUST supply  the  password   
  6350.                         associated with that file.
  6351.  
  6352.                         The archive functions of extract and  contents   
  6353.                         will not work on any protected file.
  6354.  
  6355.                                Password Kill After Downloading
  6356.  
  6357.                         This  functions  the  same  as  the   Password   
  6358.                         download EXCEPT, the file will  be deleted and   
  6359.                         the  file  listing  for it  removed  once  the   
  6360.                         caller has download it.
  6361.  
  6362.                                     Bi-Directional Upload
  6363.  
  6364.                         Following   each  download,  I'll  check   the  
  6365.                         temporary upload directory, UPLxx.TMP with  xx  
  6366.                         being  the  node number, to see if  the  party  
  6367.                         doing  the download uploaded anything using  a  
  6368.                         bi-directional protocol.
  6369.  
  6370.  
  6371.                                        File Queue
  6372.  
  6373.                    The   new  upload search,  search/find,  full  file   
  6374.                    listings,   and   quick  file  listing  has  a  TAG   
  6375.                    option.  You  can  tag  up  to  40  files,  in  any   
  6376.                    directory, for batch downloading.
  6377.  
  6378.                    The File Queue system has its own internal  menu(s)   
  6379.                    and you don't need to setup anything.
  6380.  
  6381.                    The   File  Queue  menu  has  several   selections:   
  6382.                    Download,  list selected files, remove  a  file(s),   
  6383.                    clear the queue, estimated transfer time, return to   
  6384.                    file menu.
  6385.  
  6386.  
  6387.  
  6388.  
  6389.  
  6390.  
  6391.          Osiris SE         Technical Reference Manual        Page  95
  6392.  
  6393.                                            Download
  6394.  
  6395.                         Similar to the Download command from the  main   
  6396.                         file  area. Providing you have  access,  time,   
  6397.                         and  you  haven't  exceeded any  of  the  file   
  6398.                         ratios,  I'll allow you to download the tagged   
  6399.                         files from the QUEUE menu.
  6400.  
  6401.                                      List Selected Files
  6402.  
  6403.                         This  will display a LIST of the files  you've   
  6404.                         tagged along with the TOTAL byte count.
  6405.  
  6406.                                             Remove
  6407.  
  6408.                         If  you've  selected too many files and  don't   
  6409.                         have the time or byte count to download  them,   
  6410.                         you  can  remove  individual  files  from  the   
  6411.                         queue. 
  6412.  
  6413.                                    Estimated Transfer Time
  6414.  
  6415.                         Shows  the  estimated transfer  time  for  the   
  6416.                         files you have tagged.
  6417.  
  6418.                    Leaving   the file area, downloading  other  files,   
  6419.                    etc. does not affect the status of the tagged files. 
  6420.  
  6421.                                        Trans Stats
  6422.  
  6423.                    This  displays information about your current  file   
  6424.                    transfer statistics: Last throughput rating, number   
  6425.                    of bytes and files downloaded for the day and total   
  6426.                    files and bytes downloaded to date. File Ratio  set   
  6427.                    for  callers access level and his current  STANDING   
  6428.                    in respects to those ratios.
  6429.  
  6430.                                         Messages
  6431.  
  6432.                    Gives you direct access to the Message Center  from   
  6433.                    any file area. 
  6434.                                           Type
  6435.  
  6436.                    Displays  an   ASCII  text   file  listed   in  the    
  6437.                    FILES.QBS to the caller's screen.
  6438.  
  6439.                    For  security purposes, ANSI characters  and  SPL/I   
  6440.                    commands will be FILTERED out of the file. 
  6441.  
  6442.                                         Protocol 
  6443.   
  6444.                    Lets you reset your default protocol from the  file   
  6445.                    area. 
  6446.          Osiris SE         Technical Reference Manual        Page  96
  6447.  
  6448.                                          Extract 
  6449.   
  6450.                    Lets  you pull a single file OUT of an Archive  for    
  6451.                    downloading.   The first name I'll ask you  for  is    
  6452.                    the  FULL   name  of  the  Archive,  the  extension   
  6453.                    must  be included.   The second name I'll  ask  you   
  6454.                    for  is  the  name of  the  file  to be   EXTRACTED    
  6455.                    from the archive. 
  6456.                                          Restrictions
  6457.  
  6458.                         No  wild   card  file   names,  those   to  be   
  6459.                         extracted,  are   allowed; the   primary  file    
  6460.                         must  be  an Archive; and only  ONE  extracted   
  6461.                         file is allowed  at one time.
  6462.  
  6463.                                          Auto-Cleanup
  6464.  
  6465.                         I'll   automatically   clean   up   after   an   
  6466.                         Extraction  either when you log-off  or   when   
  6467.                         carrier  is  lost.  Any  extracted   file   or   
  6468.                         Osiris-built   extracted  archive  left  lying    
  6469.                         around  will  be deleted  before   control  is   
  6470.                         released back to the front-end.
  6471.  
  6472.                                           Rearchive 
  6473.   
  6474.                         Once the  file has  been extracted,  I'll  ask   
  6475.                         you  to  select a NEW archive format  for  the   
  6476.                         file.
  6477.  
  6478.                         Archive formats supported: ARJ, ARC, ZIP, PAK,   
  6479.                         and LZH. 
  6480.   
  6481.                         If  I  can convert the file to  the  requested   
  6482.                         format, it'll be placed in the file queue  for   
  6483.                         downloading.
  6484.  
  6485.                         All Extracted file(s) will be placed in a sub-  
  6486.                         directory called TARC, located off the Osiris=   
  6487.                         directory.  I'll  create the directory  if  it   
  6488.                         does NOT exist.
  6489.  
  6490.                         This allows Extract to be used on WORM or  CD-  
  6491.                         ROM drives.
  6492.                                         Contents 
  6493.   
  6494.                    Displays  a list of all the files contained  within   
  6495.                    an  archive.   The  name I'll ask you  for  is  the    
  6496.                    FULL  name  of  the   archive  and   the    archive   
  6497.                    extension   must  be included. View  supports  ARJ,   
  6498.                    PAK, ZIP, LHARC, and ARC.
  6499.  
  6500.  
  6501.          Osiris SE         Technical Reference Manual        Page  97
  6502.  
  6503.                                         Achiever Notes
  6504.  
  6505.                         Osiris requires the following archive programs   
  6506.                         for extract and view.
  6507.  
  6508.                                      PAK.EXE 
  6509.                                      ARJ.EXE 
  6510.                                  PKUNZIP.EXE 
  6511.                                    PKZIP.EXE 
  6512.                                    LHARC.EXE 
  6513.                                   PKXARC.EXE 
  6514.                                    PKARC.EXE
  6515.  
  6516.                         You should set the shell memory for  archivers   
  6517.                         to  384K,  the largest amount of  free  memory   
  6518.                         required by ARJ. 
  6519.  
  6520.                                         New Files
  6521.  
  6522.                    The new upload search is based on the DATE of  your   
  6523.                    LAST  new uploads search, new callers will  default   
  6524.                    to the CURRENT date.
  6525.  
  6526.                    The  last search date will be displayed and  you do  
  6527.                    have  the option of changing it. At the end of  the   
  6528.                    search, I'll ask you if it is OK to log the date of   
  6529.                    this  search, provided it isn't already set to  the   
  6530.                    current date.
  6531.  
  6532.                    This lets you forego having the date logged if  you   
  6533.                    do not, for whatever reason, have time to  download   
  6534.                    the  new files. You can say "No" and the next  time   
  6535.                    you do a new uploads search, the same date will  be   
  6536.                    used.
  6537.  
  6538.                    You  also have the option of TAGGING any NEW  file,   
  6539.                    adding it to the file queue, for batch downloading.
  6540.  
  6541.                    Password protected files will not be listed in this   
  6542.                    search. 
  6543.                                        Conference
  6544.  
  6545.                    Takes you to the Message conference subsystem.
  6546.  
  6547.                                          Gate_fr
  6548.  
  6549.                    A  text  file (Gate_f.asc/mmu/ans).
  6550.  
  6551.  
  6552.  
  6553.  
  6554.  
  6555.  
  6556.          Osiris SE         Technical Reference Manual        Page  98
  6557.  
  6558.                                       File One
  6559.  
  6560.                    A  text file, File1.asc/mmu/ans, provided  for  any   
  6561.                    thing you want to use it for.
  6562.  
  6563.                    Before you attempt to access any newly defined file   
  6564.                    boards,  you should bring up FAM and log into  each   
  6565.                    of  the  new areas to make sure you  did  not  miss   
  6566.                    define a path.
  6567.                                       Dl Time
  6568.  
  6569.               When  you TAG or enter the name of a file  to  download,   
  6570.               the estimated download time will be displayed  following   
  6571.               the file name. 
  6572.  
  6573.               This  is based on TOTAL BYTES SELECTED. In other  words,   
  6574.               if  4 files have already been selected and you  enter  a   
  6575.               5th  file name, the estimated transfer time will be  for   
  6576.               ALL FIVE FILES.
  6577.  
  6578.                                    Error Messages
  6579.  
  6580.                    When  you type in the name of a file  to  download,   
  6581.                    there are four possible error messages.
  6582.  
  6583.                    =>  FILE NOT FOUND <= which means you typed in  the   
  6584.                    name of a file that doesn't exist on the system.
  6585.  
  6586.                    => ACCESS DENIED <= The file was located in an area   
  6587.                    that  required  a  higher access  level.
  6588.  
  6589.                    =>   PWD FAILURE!  <= which means you attempted  to   
  6590.                    download  a password protected file and  failed  to   
  6591.                    enter the correct password.
  6592.  
  6593.                    =>    Duplicate   <= which means you've selected  a   
  6594.                    file you ALREADY HAVE listed for downloading.
  6595.  
  6596.  
  6597.                             File Transfer Protocols
  6598.  
  6599.                           Protocols, Internal Or External
  6600.  
  6601.               You  have two basic ways of handling protocols, you  can   
  6602.               build them into the BBS package or you can use  EXTERNAL   
  6603.               protocols.  Each  method  has  its  own  advantages  and   
  6604.               disadvantages.
  6605.                                         Internal 
  6606.                
  6607.                    Internal  protocols give you, or rather  me,  total   
  6608.                    control  over  what  is actual  SENT  and  what  is   
  6609.                    actually RECEIVED. 
  6610.  
  6611.          Osiris SE         Technical Reference Manual        Page  99
  6612.  
  6613.                    If you select 5 files to download, but lose carrier   
  6614.                    after transferring only 3 of them, then I know only   
  6615.                    the first 3 got transfers and will only "BILL"  you   
  6616.                    for those three files.
  6617.  
  6618.                    If you upload a file, I know EXACTLY what file  you   
  6619.                    uploaded  and I can wait until AFTER you finish  to   
  6620.                    get the descriptions.
  6621.  
  6622.                    Internal  protocols do have several major, I  think   
  6623.                    they are major, drawbacks.
  6624.  
  6625.                    The  specific way a protocol works, internal  code,   
  6626.                    isn't always compatible with the MACHINE it's being   
  6627.                    used  on. A good example is DSZ. It works  fine  on   
  6628.                    some computers, but not on others. 
  6629.  
  6630.                    If  the  internal  protocol doesn't  work  on  your   
  6631.                    machine, you're out of luck! If there is a BUG in a   
  6632.                    particular  protocol, you have to get a  WHOLE  NEW   
  6633.                    BBS  package  when the bug is fixed. If  you  don't   
  6634.                    like  the  way  the protocol  LOOKS  or  functions,   
  6635.                    you're out of luck!
  6636.  
  6637.                                         External
  6638.  
  6639.                    With external protocols, if you don't like the  way   
  6640.                    a specific protocol looks or works, you're free  to   
  6641.                    swap in one that does work or looks  better.   It's  
  6642.                    ENTIRELY up to you.
  6643.  
  6644.                    If  a protocol has a BUG, you ONLY need to get  the   
  6645.                    new PROTOCOL driver and NOT the whole BBS package.
  6646.  
  6647.                    Most  of the GOOD protocols, Tmodem for  instances,   
  6648.                    are proprietary and you HAVE to go with an external   
  6649.                    driver if you want to USE them.
  6650.  
  6651.                    External protocols DO have a couple of drawbacks.
  6652.  
  6653.                    If you're downloading a BATCH of files and you  get   
  6654.                    3  of  them but lose carrier on the 4th  and  final   
  6655.                    file, I'll have to "BILL" you for ALL 4 files. 
  6656.  
  6657.                    Question: Why?  
  6658.  
  6659.                    Answer: DOS only allows you to EXIT a program  with   
  6660.                    a SINGLE error level. External protocols use  error   
  6661.                    level 0 to indicate a successful transfer and 1  or   
  6662.                    higher  to indicate an unsuccessful  transfer.  You   
  6663.                    can't say 0 for this file and 1 for this file.
  6664.  
  6665.  
  6666.          Osiris SE         Technical Reference Manual        Page 100
  6667.  
  6668.                    Question:  Why  not a LOG  file  indicating  which   
  6669.                    file(s) were sent?
  6670.  
  6671.                    Answer:  You could, providing the  protocol  driver   
  6672.                    could  write the LOG in a SPECIFIC format  AND  the   
  6673.                    protocol driver would also have to be MULTIUSER. 
  6674.  
  6675.                    You  can't have a protocol driver on two  or  three   
  6676.                    different  NODES  attempting to WRITE to  the  same   
  6677.                    LOG.  You'll end up with garbage. And if you  start   
  6678.                    REQUIRING  external  protocols  to  FUNCTION  in  a   
  6679.                    specific  MANNER,  you will have a lot  of  trouble   
  6680.                    finding  ones  that will work with  your  software.   
  6681.                    Pcboard   is  a  GOOD  example.  If   you  use   MY  
  6682.                    protocols, I will use that  type  of  log but it is  
  6683.                    not required.
  6684.  
  6685.                    When  you  UPLOAD, I have to ASK  you,  before  the   
  6686.                    upload,  what file(s) you'll be uploading.  
  6687.  
  6688.                    If  you tell me you'll be uploading "TEST.ARJ"  and   
  6689.                    turn  around and upload "TEST.ZIP," you'll NOT  get   
  6690.                    credit  for  the upload because TEST.ARJ  does  NOT   
  6691.                    exist in the upload directory.
  6692.  
  6693.                    Again,  the protocol can ONLY exit with  ONE  error   
  6694.                    level  AND  you can't use a LOG file for  the  same   
  6695.                    reasons you can't use one on DOWNLOADS.
  6696.  
  6697.                    If  you  are  using one of  my  protocols;  Tmodem,  
  6698.                    Zmodem,  Ymodem  Batch, Ymodem-G, or Zmax  and  you  
  6699.                    engage  the  -N switch, the  protocol  driver  will  
  6700.                    simply  refuse to accept anything you  didn't  tell  
  6701.                    the BBS you were going to upload.
  6702.  
  6703.                    Question:  WHY couldn't I JUST look in  the  upload   
  6704.                    directory  and if there is a NEW, use the  name  of   
  6705.                    THAT file.
  6706.  
  6707.                    Answer: Because I don't KNOW that you were the  one   
  6708.                    that uploaded that file. What if someone on Node  3   
  6709.                    was uploading and that file was one of his?
  6710.  
  6711.                    Question:  Why not use a different  upload  holding   
  6712.                    area for each node?
  6713.  
  6714.                    Answer:  You could with a 2 or 3 node  system,  but   
  6715.                    anything  more than 3 nodes would create  a  bottle   
  6716.                    neck  on  the file server, copying files  back  and   
  6717.                    forth. A couple of BBS packages do this and you can   
  6718.                    really   tell  it  when  the  system  comes  to   a   
  6719.                    screeching halt while the server attempts to  catch   
  6720.                    up.
  6721.          Osiris SE         Technical Reference Manual        Page 101
  6722.  
  6723.  
  6724.          Osiris  is setup to use a control file called  "protocol.cfg"    
  6725.          to  define   the  protocol names, programs to  use,  and  the    
  6726.          command  line  to  send  and  receive  files.  A   functional   
  6727.          Protocol.cfg is included mapped to use my protocol drivers.
  6728.  
  6729.          This  allows  you,  providing you have  a  suitable  protocol   
  6730.          driver, to add up to 32722 protocols to Osiris.
  6731.  
  6732.          You   use   the  PROTOCOL section of  OSM  to   define   each   
  6733.          protocol and the information for that protocol.
  6734.  
  6735.  
  6736.                                   How It All Works 
  6737.   
  6738.               Osiris uses the protocol.cfg file by assigning a  number   
  6739.               to  each  protocol.   The position in the  file  is  the   
  6740.               protocols  number. 
  6741.   
  6742.               For  instances, if the first protocol defined is  Zmodem   
  6743.               and  it  is   in  the default  protocol.cfg  file,  then   
  6744.               Zmodem  would  be referenced as protocol number one (1).
  6745.  
  6746.               I'll  take care of formatting a display  screen  listing   
  6747.               your  available  protocols along with the CPS  for  each   
  6748.               protocol. 
  6749.                                 Protocol.cfg Fields
  6750.  
  6751.               Each protocol record has seven main fields. 
  6752.   
  6753.                                           Name 
  6754.   
  6755.                    Contain the name of the protocol, the name  that will   
  6756.                    be shown to callers. 
  6757.                                          Program 
  6758.   
  6759.                    This field contains the name of the actual protocol   
  6760.                    driver.  
  6761.                                       Send File(s) 
  6762.   
  6763.                    This  field  should contain the entire command line    
  6764.                    need  to send a file or group of files.
  6765.  
  6766.                    You   may   use  the  special   embedded   protocol   
  6767.                    characters  defined later on.
  6768.  
  6769.                                      Receive File(s) 
  6770.   
  6771.                    This  field  should contain the entire command line    
  6772.                    need  to receive a file or group of files. 
  6773.   
  6774.                    You   may   use  the  special   embedded   protocol   
  6775.                    characters  defined later on.
  6776.          Osiris SE         Technical Reference Manual        Page 102
  6777.  
  6778.                             Slow Speed Cps And High Speed Cps
  6779.  
  6780.                    I'll use these fields for figuring transfer times.
  6781.  
  6782.                    The  reason  you need two fields instead of  one  :  
  6783.  
  6784.                    Some  protocols such as xmodem, ymodem, puma,  etc.   
  6785.                    function   "reasonable"  well  at  2400   bps.   By   
  6786.                    reasonable  I mean better than 75 percent.  But  at   
  6787.                    9600+ it's a different story.
  6788.  
  6789.                    As  a  starting guide here are a few that  you  can   
  6790.                    use:
  6791.  
  6792.                    Protocol        Low CPS        High CPS
  6793.  
  6794.                    Tmodem          240            1152 
  6795.                    Ymodem-G        230            1100 
  6796.                    Zmodem          228            1008 
  6797.                    Ymodem/Batch    218            624 
  6798.                    Xmodem 1K       218            624 
  6799.                    Xmodem          204            480 
  6800.  
  6801.                    This  can  and will vary  depending  on  equipment,   
  6802.                    protocol implementations, phone lines, etc.
  6803.  
  6804.                    The high CPS is based on a 19.2K lock using an  HST   
  6805.                    450. A v32bis, 14.4, or DS will provide better  CPS   
  6806.                    on the high side. 
  6807.                                      Batch Protocol
  6808.  
  6809.                    This field, set to Y or N, tells me whether or  not   
  6810.                    the  protocol  can  handle  BATCH  downloads.   The   
  6811.                    primary  use  or goal is to  prevent  someone  from   
  6812.                    attempting  to  download  3  or  4  files  using  a   
  6813.                    protocol  that  does  NOT  support  that  type   of   
  6814.                    transfer,  xmodem. This  is to KEEP you from  being  
  6815.                    CHARGE with ALL  of  the files, even thou only  ONE  
  6816.                    was actual sent.
  6817.                                       Access Level
  6818.  
  6819.                    This  is the access level you have to have  to  USE   
  6820.                    this  protocol.  This  is to  accent  the  ANTI-PMS   
  6821.                    system.  If  you don't have access to  a   specific   
  6822.                    protocol,  I'm not going to bother to HIDE it.
  6823.  
  6824.                                          New Callers
  6825.  
  6826.                         You  should have your BASIC protocols  set  to   
  6827.                         access level 0 so NEW callers can select them.   
  6828.                         Since  new  callers  don't  yet  HAVE  a  user   
  6829.                         record, their access level would be ZERO.
  6830.  
  6831.          Osiris SE         Technical Reference Manual        Page 103
  6832.  
  6833.                            Embedded Protocol Characters 
  6834.   
  6835.               You   will need a method of passing the com port,   baud    
  6836.               rate,  and  the  name(s) of the file(s) to  be  sent  or   
  6837.               received. 
  6838.   
  6839.               Therefore,  6  special  two  character  sequences   have    
  6840.               been reserved.
  6841.  
  6842.               *L = Locked Serial Rate  
  6843.               *B = Baud Rate  
  6844.               *P = Com Port  
  6845.               *F = File name(s) (MUST BE LAST ITEM LISTED) 
  6846.               *U  =  Use  File SEND control file (MUST  BE  LAST  ITEM   
  6847.                      LISTED)
  6848.  
  6849.               *P, replaced with the SERIAL port number, 1 - 8.
  6850.  
  6851.               *T,  place full drive and path to the  temporary  upload  
  6852.               directory for this node.
  6853.  
  6854.               *B  I'll place the CONNECT speed, which will ALWAYS be a   
  6855.               LEGAL  serial  rate.  
  6856.  
  6857.               Some BBS programs, Wildcat and Pcboard for example, will   
  6858.               send  almost anything as a connect baud rate,  including   
  6859.               12000  and 14400. That causes external programs to  have   
  6860.               fits because 12000 or 14400 are not legal serial rates.
  6861.  
  6862.               *F  means place the file names to SEND or RECEIVE here.
  6863.  
  6864.               The NUMBER of files that can be sent will depend on  the   
  6865.               LENGTH  of your file download paths. Only what will  fit   
  6866.               on  the 128 character command line (including all  other   
  6867.               items  such  as baud rate, port number,  etc.)  will  be   
  6868.               allowed. The rest will be ignored. This MUST be the very   
  6869.               last switch you use.
  6870.  
  6871.               If  you're  testing your installation  and  notice  that   
  6872.               after  you've  selected  several files  and  you  go  to   
  6873.               DOWNLOAD  and the number shown is LESS than what  you've   
  6874.               selected,  don't get alarmed and start looking  for  the   
  6875.               "BUG."
  6876.  
  6877.               This  isn't a bug and I'm just "TRIMMING" the number  of   
  6878.               files BACK to what will FIT on the command line.
  6879.  
  6880.  
  6881.  
  6882.  
  6883.  
  6884.  
  6885.  
  6886.          Osiris SE         Technical Reference Manual        Page 104
  6887.  
  6888.               Silly,  but I spent 4 hours one day trying to FIND  that   
  6889.               THINKING  it was a bug. It finally dawned on  me,  there   
  6890.               was NO bug and I had used the *F in place of the *U.
  6891.  
  6892.               *U  means place the names, including drive/path, of  the   
  6893.               files to send in a control file and pass the name of the   
  6894.               control  file to the protocol driver. I'll generate  the   
  6895.               name of the control file and it'll be called  SENDxx.CTL   
  6896.               with xx being the NODE number the caller is on.
  6897.  
  6898.               The  control  file will be placed in the  Osiris  system   
  6899.               directory  and  the full drive, path, and name  WILL  be   
  6900.               passed to the driver.
  6901.  
  6902.               e.g. Assuming you are using my drivers then
  6903.  
  6904.               -@*U 
  6905.  
  6906.               would translate to -@C:\OSIRIS\SEND1.CTL
  6907.  
  6908.               Providing C:\OSIRIS was the Osiris system directory  and   
  6909.               the caller was on NODE 1.
  6910.  
  6911.               You MUST use the *U  approach if you're going  to  allow   
  6912.               your  callers to take full advantage of the  file  queue   
  6913.               system.  Otherwise they'll be restricted to  downloading   
  6914.               only 2 or maybe 3 files at a time. 
  6915.  
  6916.               *L  -  SERIAL LOCK RATE and is  primarily  for  protocol   
  6917.               drivers I didn't write but need to have the serial  lock   
  6918.               rate passed to them.
  6919.  
  6920.                               Bi-Directional Protocols
  6921.  
  6922.               Osiris does have internal support for bi-directional  or  
  6923.               full duplex protocols such as Bimodem and HS/Link. 
  6924.  
  6925.               To  set-up a protocol as bi-directional, simply  include  
  6926.               the *T switch with the appropriate protocol command line  
  6927.               argument  that indicates where the upload  directory  is  
  6928.               located.
  6929.  
  6930.               E.g., HS/Link would use -U*T
  6931.  
  6932.               If node 1, Osiris would replace that with
  6933.  
  6934.               -UC:\OSIRIS\UPL1.TMP
  6935.  
  6936.               When the caller selects the files he wants to  download,  
  6937.               he  may have HS/Link or Bimodem send the files he  wants  
  6938.               to upload.
  6939.  
  6940.  
  6941.          Osiris SE         Technical Reference Manual        Page 105
  6942.  
  6943.               After  the  download, I'll check  the  temporary  upload  
  6944.               directory  for  anything  he or she  may  have  uploaded  
  6945.               during the download.
  6946.  
  6947.               If I find any files the following will happen:
  6948.  
  6949.               1.  I'll check to see if the file already exists on  the  
  6950.               system.  If  it does, the file will be deleted  and  the  
  6951.               caller will not get credit for the upload.
  6952.  
  6953.               2. If the file is has the file extension of EXE, COM, or  
  6954.               BAT  it  will  be deleted and the caller  will  not  get  
  6955.               credit for the upload.
  6956.  
  6957.               3. Assuming the file passes 1 and 2, it will be moved to  
  6958.               the upload area for the current file area.
  6959.  
  6960.               4. If the file is an archive and you have virus checking  
  6961.               turned  on,  the  file will be pulled  apart  and  virus  
  6962.               checked.
  6963.  
  6964.               5. Assuming it is free of any type of virus, the  caller  
  6965.               will  be  asked to enter the files description.  If  the  
  6966.               caller  drops  carrier before the  file  description  is  
  6967.               entered,  the file will be deleted and he will  not  get  
  6968.               credit for the upload.
  6969.  
  6970.               Bi-directional  transfers  CAN be an asset if  you  have  
  6971.               callers willing to upload files and they are using  2400  
  6972.               baud modems.
  6973.  
  6974.                                       Restrictions
  6975.  
  6976.                    Be  forewarned, bi-directional transfers  are  VERY  
  6977.                    CPU intensive. Your computer may be able to  handle  
  6978.                    bi-directional  transfers at 2400 baud but  it  may  
  6979.                    not  be able to handle them under v32,  v32bis,  or  
  6980.                    v32fast connects.
  6981.  
  6982.                    Bi-directional transfers at speeds higher than 2400  
  6983.                    baud  RARELY work under Windows, Desqview, or  when  
  6984.                    Network software is in memory.
  6985.  
  6986.                    Bi-directional transfers at speeds higher than 2400  
  6987.                    baud generally requires a 16550 highspeed uart.
  6988.  
  6989.                    Bi-directional   transfers  will  not   work   with  
  6990.                    USRobotics  14.4, Hayes 9600v series, TeleBit  PEP,  
  6991.                    CompuCom   CSP,   and   several   other   highspeed  
  6992.                    protocols. 
  6993.  
  6994.  
  6995.  
  6996.          Osiris SE         Technical Reference Manual        Page 106
  6997.  
  6998.                          Validation And Virus Checking
  6999.  
  7000.          You  nodeXX.ini has an option to turn on virus  checking.  If   
  7001.          this is ON, I'll do several things to a new upload.
  7002.  
  7003.          1.  The uploading of EXE or COM files, often used  to  spread   
  7004.          virus infections, will not be allowed.
  7005.  
  7006.          2.  Following  the  upload, I'll test the  integrity  of  the   
  7007.          archive  by attempting to extract all the files. Should  this   
  7008.          FAIL, the file will be deleted.
  7009.  
  7010.          3.  Once step two has been completed successfully, I'll  call   
  7011.          SCAN.EXE to scan the extracted files for any virus.
  7012.  
  7013.          SCAN.EXE MUST be in a PATHED directory or ALL uploads will be   
  7014.          deleted even thou they could not be checked. DOS returns  the   
  7015.          same error code for "Program not found" as SCAN does when  it   
  7016.          finds a virus.
  7017.  
  7018.          4.  Following  the VIRUS scan, the extracted  files  will  be   
  7019.          deleted.
  7020.  
  7021.          *IF*  a virus was detected I'll notify you, the  caller  and   
  7022.          then delete the infected archive.
  7023.  
  7024.                                    Files.qbs
  7025.  
  7026.          FILES.QBS  offers more flexibility  than Fido/Opus  FILES.BBS   
  7027.          text files.  The FILES.QBS file contains: 
  7028.   
  7029.          The file name. 
  7030.          A field for description (80 characters). 
  7031.          The   upload   date  which  is  used   by  the   new   upload   
  7032.          functions. 
  7033.          The name of the person that up-loaded the file. 
  7034.          The number of times that file has been downloaded. 
  7035.          The last date the file was downloaded.
  7036.  
  7037.          When  you   select the FULL file listing option,  the   files   
  7038.          list will be displayed using five lines per file. 
  7039.  
  7040.          Name: xxxxxxxxxxxx  File Date xx xxx xxx  Upload Date xx xxx xx 
  7041.          Size: xxxxxxxxxx    Dwnld Time xx:xx      Last Dwnld  xx xxx xx 
  7042.          From: xxxxxxxxxx                          Times Dwnld xxx 
  7043.          Area: XXXXXXXXXXX 
  7044.          Description.
  7045.           
  7046.  
  7047.  
  7048.  
  7049.  
  7050.  
  7051.          Osiris SE         Technical Reference Manual        Page 107
  7052.  
  7053.                                       Confiles
  7054.  
  7055.               This is the FILES.BBS to FILES.QBS  Conversion  Utility.    
  7056.               When  you are converting to an Osiris CBIS  system  from   
  7057.               Fido  or Opus,  you will want to  run CONFILES  on  each    
  7058.               of  your   old  FILES.BBS files  to convert  them   into   
  7059.               Osiris formatted FILES.QBS files.  You may  then  delete   
  7060.               the   old FILES.BBS  files  at  your   leisure,  they'll   
  7061.               never be used again.
  7062.  
  7063.  
  7064.                                Fam: File Area Manager
  7065.   
  7066.               FAM  will, by  default, go to  file area  #1 and to  the   
  7067.               Download Directory  for that  area.  The  maximum number    
  7068.               of  files  it can handle in any file area is 750.  There   
  7069.               is NO error trapping on this limit so do NOT exceed it.
  7070.  
  7071.               I've  designed FAM more for a MOUSE than anything  else,   
  7072.               but if you don't HAVE a mouse, I'll emulate one for you.   
  7073.               You can use your ARROW keys to move the mouse cursor and   
  7074.               the  SPACE  bar  to simulate  pressing  the  left  mouse   
  7075.               button.  This  is in respects to TAGGING  and  UNTAGGING   
  7076.               files.  With  other functions, you'll have  to  use  the   
  7077.               HOTKEYS.
  7078.  
  7079.               To  select  a  function from the menu,  move  the  mouse   
  7080.               cursor  to  the one you want and click  the  LEFT  mouse   
  7081.               button.
  7082.  
  7083.               You  can also PRESS the HIGHLIGHTED letter(s)  displayed   
  7084.               on the menu.
  7085.  
  7086.               To  TAG or UN-TAG a file, move the mouse cursor to  that   
  7087.               row and click the LEFT mouse button. If you don't HAVE a   
  7088.               mouse, press the SPACE bar.
  7089.  
  7090.               To  move to a DIFFERENT page, use PgUp or PgDn.  If  you   
  7091.               have  a  mouse, click middle mouse button and  when  you   
  7092.               hear a beep, click LEFT button to go UP a page or  RIGHT   
  7093.               button to go DOWN a page.
  7094.  
  7095.               You can press HOME to go to the FIRST page or END to  go   
  7096.               to the LAST page.
  7097.  
  7098.               I also make extensive use of YES/NO/CANCEL dialog boxes.   
  7099.               You can use the mouse, arrow keys, or tab to move to the   
  7100.               option you want. Click Left mouse button or press RETURN   
  7101.               to select.
  7102.  
  7103.  
  7104.  
  7105.  
  7106.          Osiris SE         Technical Reference Manual        Page 108
  7107.  
  7108.                                       Screen Layout
  7109.  
  7110.                    The  TOP window contains miscellaneous  information   
  7111.                    such  as copyright notice, name of the program  and   
  7112.                    the  version  number, and the name of  the  current   
  7113.                    file area you're in, along with (DN) or (UP).  (UP)   
  7114.                    stands  for  UPload  directory and  DN  stands  for   
  7115.                    DOWNload directory.
  7116.  
  7117.                    The MIDDLE window is 15 rows long and this is where   
  7118.                    I'll display the file names and up to 60 characters   
  7119.                    of the description field.
  7120.  
  7121.                    The  BOTTOM  window  is  a  menu  with   additional   
  7122.                    statistics.
  7123.  
  7124.                    The  information is related to the number of  files   
  7125.                    tagged, total files in the area, current PAGE being   
  7126.                    displayed and the total number of pages.
  7127.  
  7128.                    I'll show it as Page xx of xx
  7129.  
  7130.                                         Using Fam
  7131.  
  7132.                    To  do ANYTHING with the files, they must first  be   
  7133.                    "Tagged."  You  do this by moving  TO the  row  the   
  7134.                    file  is on and clicking the LEFT mouse  button  or   
  7135.                    press the SPACE bar.
  7136.  
  7137.                    When  a  file is tagged, the ROW it's  on  will  be   
  7138.                    displayed in FLASHING BLACK on WHITE, UN-TAGGED   
  7139.                    files are white on black. 
  7140.                     
  7141.                    You can untag a file by following the  same  steps    
  7142.                    a second  time.    
  7143.                                           Move 
  7144.   
  7145.                    Although MOVE works on GROUPS of tagged files, I'll   
  7146.                    ask  you, before moving each file, which  area  you   
  7147.                    want THAT file moved TO. This lets you tag multiple   
  7148.                    files  from a COMMON upload area and move  them  to   
  7149.                    different download areas. 
  7150.                     
  7151.                    I'll also ask if you want the UPLOAD date to be the   
  7152.                    CURRENT date, so it'll show UP as a new upload.  
  7153.   
  7154.                    If   you  select  CANCEL,  this  will  CANCEL   the   
  7155.                    remaining  moves,  including the current  one,  and   
  7156.                    return you to the main screen.
  7157.  
  7158.                    I'll NEVER overwrite an existing file. If the  file   
  7159.                    already  exits in the directory the file is  to  be   
  7160.                    moved TO, I'll skip to the next file.
  7161.          Osiris SE         Technical Reference Manual        Page 109
  7162.  
  7163.                                           Kill 
  7164.   
  7165.                    I'll  display TWO conformation boxes. The first  is   
  7166.                    physically delete files [YES][NO]. This allows  you   
  7167.                    to PHYSICALLY remove the files from the hard  drive   
  7168.                    AND the Files listing at the same time. 
  7169.  
  7170.                    If you answer NO, I'll assume you want the  LISTING   
  7171.                    to  be removed and the physical FILES will be  left   
  7172.                    along.
  7173.  
  7174.                    The  2nd  conformation box is your LAST  chance  to   
  7175.                    BACK OUT of the operation, select [YES] to proceed.
  7176.  
  7177.                                       Change Areas
  7178.  
  7179.                    Lets  you switch to a different FILE area.  If  you   
  7180.                    are  in  the  UPLOAD directory, you'll  go  to  the   
  7181.                    UPLOAD  directory in the NEW area. The  same  thing   
  7182.                    holds true if you are in the DOWNLOAD area.
  7183.  
  7184.                                          Upload
  7185.  
  7186.                    Changes  into the UPLOAD directory for the  CURRENT   
  7187.                    file area. 
  7188.                                          Dnload
  7189.  
  7190.                    Changes into the DOWNLOAD directory for the CURRENT   
  7191.                    file area.
  7192.                                           Edit 
  7193.   
  7194.                    This allows you to EDIT the file record(s) for  the   
  7195.                    files you have TAGGED.
  7196.  
  7197.                    The "edit record" window will appear at  the top of   
  7198.                    the   screen.   You'll start with  the  description    
  7199.                    field  and pressing <Enter> or the Down-Arrow   key   
  7200.                    will move the cursor on to the next field.
  7201.  
  7202.                    After  you  have edited the last field,  you'll  be   
  7203.                    moved  to the UPDATE, ABORT, CANCEL section of  the   
  7204.                    "edit record" window.
  7205.  
  7206.                    If  you click on the UPDATE box or press 'U',  I'll   
  7207.                    save your changes.
  7208.  
  7209.                    If  you click on the ABORT box or press  'A',  I'll   
  7210.                    NOT  update the record, any changes will  be  lost,   
  7211.                    and  you'll go on to the NEXT record in the  batch,   
  7212.                    if there is one.
  7213.  
  7214.  
  7215.  
  7216.          Osiris SE         Technical Reference Manual        Page 110
  7217.  
  7218.                    If  you click on the CANCEL box or press 'C',  I'll   
  7219.                    NOT  update the record, any changes will  be  lost,   
  7220.                    and  I'll CANCEL the BATCH edit and return  you  to   
  7221.                    the main screen.
  7222.                                           Info
  7223.  
  7224.                    Displays  an INFORMATION window showing  FULL  file   
  7225.                    information   ;  who  uploaded  file,   last   time   
  7226.                    downloaded,  full  description,  times  downloaded,   
  7227.                    etc. for the files you have tagged.
  7228.  
  7229.                    You'll also be required to click on the NEXT box or   
  7230.                    press 'N' to go to the next file in the BATCH.
  7231.  
  7232.                    If  you click on the CANCEL box or press 'C',  then   
  7233.                    the BATCH will be canceled and you'll return to the   
  7234.                    main screen. 
  7235.                                          Orphans 
  7236.   
  7237.                    Orphans are files in a file area that aren't listed    
  7238.                    in  the FILES.QBS file.  
  7239.  
  7240.                    If  a   file  has been flagged as  an  Orphan,  the   
  7241.                    message "Adopt Filename ?" will  appear.   Clicking   
  7242.                    the YES box will adopt it. Clicking on NO will skip   
  7243.                    it  and clicking on CANCEL will abort the  Adoption   
  7244.                    process and returns to the main screen.
  7245.  
  7246.                                          Arcview 
  7247.   
  7248.                    Lets  you  view the  contents  of  any  number   of    
  7249.                    Tagged  Archives.  
  7250.                                          Arcformat
  7251.  
  7252.                    Lets  you change the archive format of  the  tagged   
  7253.                    files to either Zip, Lharc, or ARJ.
  7254.  
  7255.                    The   files  ORIGINAL  date/time  stamps  will   be   
  7256.                    retained.
  7257.  
  7258.                    Warning!!! I suggest, strongly suggest, that you do   
  7259.                    NOT  use FAM to convert Zip, Arj, Pak, and  Arc  to   
  7260.                    Lharc format.
  7261.  
  7262.                    Lharc  doesn't appear to clear the area it uses  to   
  7263.                    store  headers,  and  doesn't  always  create   the   
  7264.                    archives correctly.
  7265.  
  7266.                    To make matters worse, it returns error level zero,   
  7267.                    archive process successful, so I can't detect  when   
  7268.                    it DOES mess-up.
  7269.  
  7270.  
  7271.          Osiris SE         Technical Reference Manual        Page 111
  7272.  
  7273.  
  7274.                    I've tested this, to make sure it wasn't a  problem   
  7275.                    with   FAM,   by shelling out and   attempting   to   
  7276.                    use   Lharc manually.  It did not always  work  the  
  7277.                    way  it  was suppose to.
  7278.  
  7279.                                       Arcaddcomment
  7280.  
  7281.                    This  allows  you to ADD ARCHIVE  comments  to  the   
  7282.                    Tagged files.
  7283.  
  7284.                    ONLY ZIP and ARJ archives support archive  comments   
  7285.                    and  if the archive format isn't one of those  two,   
  7286.                    it will be skipped.
  7287.  
  7288.                    You MUST make a file called "COMMENT.FAM" and place   
  7289.                    it  in your OSIRIS= directory. This  file  contains   
  7290.                    the COMMENTS you want added to the archive.
  7291.  
  7292.                    If I can't find COMMENT.FAM then I'll return you to   
  7293.                    the main screen.
  7294.  
  7295.                    WARNING!!!! DO NOT ALTER COMMENT.FAM AFTER YOU HAVE   
  7296.                    STARTED FAM. IF YOU NEED TO CHANGE THE COMMENT.FAM;   
  7297.                    EXIT  FAM, EDIT COMMENT.FAM, AND THEN RESTART  FAM.   
  7298.                    ALTERING  COMMENT.FAM  WHILE  FAM  IS  RUNNING  CAN   
  7299.                    RESULT IN SYSTEM LOCKUP.
  7300.  
  7301.                    The  MAXIMUM size of the COMMENT.FAM file  is  2048   
  7302.                    bytes, a limit imposed by the archivers.
  7303.  
  7304.                    If the file size exceeds 2048 bytes, I'm not  going   
  7305.                    to use it.
  7306.                                           Shell
  7307.  
  7308.                    Shells  to DOS. Useful if you need to  examine  the   
  7309.                    contents of an archive more closely.
  7310.  
  7311.                                          Rename
  7312.  
  7313.                    Lets  you RENAME the tagged files. I'll  NOT  allow   
  7314.                    you to use the name of a file that already exits in   
  7315.                    that directory.
  7316.                                         Untag All
  7317.  
  7318.                    Quick method of UNTAGGING all the files at once.
  7319.  
  7320.  
  7321.  
  7322.  
  7323.  
  7324.  
  7325.  
  7326.          Osiris SE         Technical Reference Manual        Page 112
  7327.  
  7328.                                         Transpose
  7329.  
  7330.                    Allows you to SHIFT a file to a DIFFERENT  position   
  7331.                    in the FILES.QBS.
  7332.  
  7333.                    1. Move to the file you want moved and tag it. 
  7334.  
  7335.                    2. Go to the TRANSPOSE option on the MENU and click   
  7336.                    on it or press 'T'.
  7337.  
  7338.                    3. After the brief instructions window has  closed,   
  7339.                    move  to the position BELOW the spot you  want  the   
  7340.                    file  moved TO and click the left mouse  button  or   
  7341.                    press the SPACEBAR.
  7342.  
  7343.          That pretty much WRAPS up everything dealing with file areas.   
  7344.          The  File  system  is  fairly  straight  forward,  no  hidden   
  7345.          gimmicks,  and  most  of  the  GRUNT  maintenance   (sorting,   
  7346.          pruning,   archive  converting,  etc...)  will  be    handled   
  7347.          automatically by CAT. See section on CAT for further details.
  7348.  
  7349.                                System Bulletins
  7350.  
  7351.          System Bulletins . . .  oh yes, something you will sooner  or   
  7352.          later need.
  7353.  
  7354.          With the flexibility of SPL/I, adding system bulletins  could   
  7355.          WELL be left entirely up to you. 
  7356.  
  7357.          But, I've added a few internal goodies to make bulletins easy    
  7358.          and  flexibility.  And if you still don't like the  built  in   
  7359.          ones, you're free to design your own using SPL/I.
  7360.  
  7361.                                      Xxxxx.msg
  7362.  
  7363.               Following  the conference mail search, if you have  that   
  7364.               activated, I'll look for (in the Osiris ROOT  directory)   
  7365.               a  file  called XXXX.MSG with XXXX  being  the  caller's   
  7366.               users  record number. If it exists, I'll show  and  then   
  7367.               delete  it.  You  can use this file  to  leave  personal   
  7368.               messages to individual callers knowing they MUST read it   
  7369.               or at least it will be shown to them.
  7370.  
  7371.                                          Warning
  7372.  
  7373.                    The  message may not be shown to the person it  was   
  7374.                    originally intended for if you delete and then pack   
  7375.                    the user records.
  7376.  
  7377.  
  7378.  
  7379.  
  7380.  
  7381.          Osiris SE         Technical Reference Manual        Page 113
  7382.                                     Accxxxx.bbs
  7383.  
  7384.               This works like the xxxxxx.MSGs. But, xxxxx is  replaced   
  7385.               with an access level.
  7386.  
  7387.               Allows you to post bulletins to GROUPS of users within a   
  7388.               specific access level.
  7389.  
  7390.               The ACCxxxx.BBS file should be placed in the Osiris root   
  7391.               directory.
  7392.  
  7393.               Unlike  the  xxxxx.MSG  files,  this  one  doesn't   get   
  7394.               automatically deleted when read.
  7395.  
  7396.                                 Smart(tm) Bulletins 
  7397.   
  7398.               I will scan a file, if it exists, called   bulletin.hdr.   
  7399.               This   contains  information  headers  about   bulletins     
  7400.               created  with  bullgen.exe. I'll compare the   date  and   
  7401.               time the bulletin was created with the date and time you   
  7402.               were  last  on-line and if the bulletin has  been  added   
  7403.               SINCE then, I'll show  it to you.
  7404.  
  7405.               The  dates are compared according to JULIAN dates so  on    
  7406.               Dec  31st,  you'll  need to delete your  old   bulletins    
  7407.               and  start fresh ones. 
  7408.   
  7409.               The  bulletins  are held in two files so  they'll   take    
  7410.               very little drive space. 
  7411.   
  7412.               You  MUST  create  the bulletins  in  your  Osiris  ROOT   
  7413.               directory.
  7414.  
  7415.               Bullgen  needs  a  command  line argument  to  tell   it    
  7416.               what function you want. 
  7417.   
  7418.               /A  . . .  Add a NEW Bulletin  
  7419.               /L  . . .  List out Bulletin Headers  
  7420.               /D  . . .  Delete one or more Bulletins 
  7421.  
  7422.                                 Getting On-Line
  7423.  
  7424.          Having enlightened you on the message system, file area,  and   
  7425.          making  menus, you're now about ready to try this puppy  out,   
  7426.          ON-LINE.
  7427.  
  7428.          To go ON-LINE, you need one of two things. A mailer front end   
  7429.          or  IMX, Osiris front end.  Since most of the  Osiris  sysops   
  7430.          run mailers, I made no attempts to have Osiris ACTUAL  handle   
  7431.          answering the phone. 
  7432.  
  7433.          If  you  have  a  Mailer,  below is  a  list  of  command  line   
  7434.          parameters that you can use.
  7435.  
  7436.          Osiris SE         Technical Reference Manual        Page 114
  7437.  
  7438.                           Required Command Line Parameters
  7439.  
  7440.               Osiris -Bxxxx -Pxx -Nxx
  7441.  
  7442.               -N requires the node number passed be supported by  your   
  7443.               version  of Osiris. A single line system  only  supports   
  7444.               node 1, a two line system supports node 1 and 2, etc.. 
  7445.  
  7446.               -Bxxxx with xxxx being the CONNECT baud rate. Valid baud   
  7447.               rates,  -Bxxxx,  range from 300 to 9600 baud  with  9600   
  7448.               baud  handling  9600, 19200, 38400, etc. via  the  COMx=   
  7449.               environment variable.
  7450.  
  7451.               The reason you do not pass a baud rate higher than  9600   
  7452.               is simple: 9600 is the highest VALID CONNECT serial rate   
  7453.               passed by modems, all we've seen. 
  7454.  
  7455.                                      Confusing Rains
  7456.  
  7457.                    Usrobotics  and  some of the other  companies  that   
  7458.                    make v.32bis modems should be SHOT, HUNG-UP by  the   
  7459.                    HEELS, STRANGLED and anything else NASTY that I can   
  7460.                    think   of  for  introducing    CONNECT  12000  and   
  7461.                    CONNECT 14400 messages. Those messages are FINE for   
  7462.                    TECH  folks who really understand what they're  all   
  7463.                    about,  but  most of you aren't TECH  oriented  and   
  7464.                    insist   on  actually  attempting  to   USE   those   
  7465.                    messages.
  7466.  
  7467.                    Sorry folks, those messages were never intended for   
  7468.                    anything  other  than debugging. If you  insist  on   
  7469.                    using them, make sure the program that's  answering   
  7470.                    the  phone KNOWS how to handle converting  them  to   
  7471.                    VALID  serial  settings,  otherwise  don't   expect   
  7472.                    anything to work.
  7473.  
  7474.                    There  are only two programs, that I know of,  that   
  7475.                    correctly handle 12000 and 14400, ISIS and IMX.
  7476.  
  7477.  
  7478.               Valid -Pxx settings : -P1, -P2, -P3,  . . .  -P8.
  7479.  
  7480.                                  Optional Settings 
  7481.                
  7482.                                 -T, Time Till Next Event
  7483.  
  7484.                    -Txxxx  time  to  your mailer  or  front-ends  next   
  7485.                    scheduled  event  with  xxxx being  the  number  of   
  7486.                    MINUTES. 
  7487.  
  7488.                    I'll  adjust  the callers time per call  to  ensure   
  7489.                    this is not missed.
  7490.  
  7491.          Osiris SE         Technical Reference Manual        Page 115
  7492.  
  7493.                                      -M, Memory File
  7494.  
  7495.                    If  you  don't have EEMS or LIM 4.0 memory,  I  can   
  7496.                    write the VMS memory map to any drive/directory  (A   
  7497.                    Ram Drive for instances) you want. 
  7498.  
  7499.                    e.g. -MD:\
  7500.  
  7501.                    Both Drive and Directory must be specified and  you   
  7502.                    must have 384K of free space available.
  7503.  
  7504.                                      -L, Local Mode
  7505.  
  7506.                    This  means  running  in  LOCAL  mode,  ignore  the   
  7507.                    absents of carrier.
  7508.  
  7509.                                    -K, No Multi-Tasker
  7510.  
  7511.                    Certain  NETWORK drivers use the same signature  as   
  7512.                    Desqview or  Double Dos. 
  7513.  
  7514.                    -K  tells me to IGNORE any SIGNATURE and assume  NO   
  7515.                    multi-tasker  is available. This prevents  me  from   
  7516.                    making TIMESLICING calls to something that  doesn't   
  7517.                    exist.
  7518.                                           -Hxxx
  7519.  
  7520.                    Tells me to load user record xxxx and jump directly   
  7521.                    to  the main menu. Generally used by the sysop  for   
  7522.                    QUICK and DIRTY local log on.
  7523.  
  7524.                                            -Cx
  7525.  
  7526.                    The default currency symbol is the dollar sign.  If   
  7527.                    you're  outside  the United States  you'll  need  a   
  7528.                    DIFFERENT  currency  symbol  for the  ON-LINE STORE   
  7529.                    (tm).
  7530.  
  7531.                    x  is the ASCII character you want me to use for  a   
  7532.                    currency symbol.
  7533.  
  7534.                    e.g.
  7535.  
  7536.                    -C#
  7537.  
  7538.                    use pound sign.
  7539.  
  7540.  
  7541.  
  7542.  
  7543.  
  7544.  
  7545.  
  7546.          Osiris SE         Technical Reference Manual        Page 116
  7547.  
  7548.                                            -X
  7549.  
  7550.                    No   internode  chat  allowed,  don't  waste   time   
  7551.                    checking. 
  7552.                      
  7553.                    Something  that  can  drain  system  resources   is   
  7554.                    checking  for  internode email. I've  attempted  to   
  7555.                    design  it so that it's a minimal drain, but  never   
  7556.                    the less, it still is a drain.
  7557.  
  7558.                    If you only have a half dozen or so nodes hooked to   
  7559.                    a  network, the drain may never be noticed. If  you   
  7560.                    have  a lot of nodes, the exact number will  depend   
  7561.                    on the TYPE of network and your equipment, you  may   
  7562.                    want to disable internode chatting to reduce server   
  7563.                    demand.
  7564.  
  7565.                    If   you're  running  under   Desqview,   disabling   
  7566.                    internode  chat   will show a speed  up  if  you're   
  7567.                    running more than two nodes.
  7568.  
  7569.                    It  may be enough to JUST limit internode  chatting   
  7570.                    to  SPECIFIC nodes. That's why it's a command  line   
  7571.                    switch instead of a blanket configuration option.
  7572.  
  7573.                    The  only way to really tell is to experiment  with   
  7574.                    your set up.
  7575.                                            -Oxxxx
  7576.  
  7577.                    -Oxxx lets you define the size of the memory  block   
  7578.                    that  is allocate to the Osage editor. The  default   
  7579.                    is 256K and should be enough for most systems.
  7580.  
  7581.                    If  you're  running  DESQview,  you  may  need   to   
  7582.                    increase this to 384 or higher.
  7583.  
  7584.                    e.g. -O384, -O512, -O640
  7585.  
  7586.                                          -Sxxxx
  7587.  
  7588.                    -Sxxx  lets you define the size of the memory block   
  7589.                    that  is  allocate to the statistics  overlay.  The   
  7590.                    default  is  256K  and should be  enough  for  most   
  7591.                    systems.
  7592.  
  7593.                    If  you're  running  DESQview,  you  may  need   to   
  7594.                    increase this to 384 or higher.
  7595.  
  7596.                    e.g. -S384, -S512, -S640
  7597.  
  7598.  
  7599.  
  7600.  
  7601.          Osiris SE         Technical Reference Manual        Page 117
  7602.  
  7603.                                   Comport.dat
  7604.  
  7605.          Osiris  has  its  own internal high speed serial  driver  and   
  7606.          needs  no  external driver such as a fossil  to  run.  Osiris   
  7607.          supports baud rates up to and including 115,200 baud.
  7608.  
  7609.          Osiris  uses  a COMPORT.DAT file that  defines  the  standard   
  7610.          serial  port information such as interrupts, addresses,  etc.   
  7611.          You  may edit this file using OSM if you need to  change  any   
  7612.          definition to accommodate non-standard serial ports. 
  7613.           
  7614.          The information in this file is in BASE 10, not in HEX. 
  7615.  
  7616.          If  you do NOT have a mailer, see section on IMX later on  in   
  7617.          this  document.  You'll  need to  use  the  IMX.EXE  program,   
  7618.          included within the package.
  7619.  
  7620.          Before you go on-line, you may want to edit the NODE1 Control   
  7621.          file.  Osetup used some default settings, which you may  want   
  7622.          to change. 
  7623.                                   Nodexx.ini
  7624.  
  7625.          Many  settings are held in a file called NODExx.INI  with  xx  
  7626.          being the node number for that node.
  7627.  
  7628.  
  7629.  
  7630.  
  7631.  
  7632.  
  7633.  
  7634.  
  7635.  
  7636.  
  7637.  
  7638.  
  7639.  
  7640.  
  7641.  
  7642.  
  7643.  
  7644.  
  7645.  
  7646.  
  7647.  
  7648.  
  7649.  
  7650.  
  7651.  
  7652.  
  7653.  
  7654.  
  7655.  
  7656.          Osiris SE         Technical Reference Manual        Page 118
  7657.  
  7658.               A NODExx.INI contains:
  7659.  
  7660.  
  7661.               2400 ; Slowest Baud Rate for ANSI (3,12,24, and 9600) 
  7662.               0    ; shell Memory ( In Kilobytes, 0 = All) 
  7663.               256  ; Memory  Required  for  Protocol  Drivers  (  In   
  7664.                      Kilobytes, 0 = All) 
  7665.               0    ; Memory Required for Archivers ( In Kilobytes, 0 =   
  7666.                      All) 
  7667.               0    ; Duplicate Upload Search TYPE (0 or 1) 
  7668.               12   ; 16550 Uart fifo Size ( 2 - 16, Greater  than  12   
  7669.                       Not recommended) 
  7670.               240  ; Serial Transmit Buffer Size for 300/1200 baud  (   
  7671.                       240 - 8196) 
  7672.               512  ; Serial Transmit Buffer Size for 2400 baud      (   
  7673.                       240 - 8196) 
  7674.               8196 ; Serial Transmit Buffer Size for 9600+ baud     (   
  7675.                      240 - 8196) 
  7676.               Yes  ; Allow Caller to PICK Password (Yes/No) 
  7677.               Yes  ; Use EMS Memory (Yes/No) 
  7678.               No   ; Duplicate Phone Number Check (Yes/No) 
  7679.               Yes  ; Use direct screen writes (Yes/No) 
  7680.               5    ; In active time out (In Minutes) 
  7681.               10   ; New User Time Limit (In Minutes) 
  7682.               1    ; Log on timer (In Minutes) 
  7683.               14   ; Days BACK to check New bulletins for NEW callers 
  7684.               Yes  ; Enable Duplicate Upload check (Yes/No)
  7685.               0    ; Keyboard/Clock per cycle (Recommend 30 if  DV  is          
  7686.                      used) 
  7687.               Off  ; Accounting system (On/Off) 
  7688.               1    ; Amount to charge (In Pennies). 
  7689.               1    ; Per minute of connect time (In Minutes) 
  7690.               1    ; Out of credit access Level (1-32722) 
  7691.               1    ; New Caller Credit (1-32722) 
  7692.               00 01 Chat ; Chat for Mon. 
  7693.               00 01 Chat ; Chat for Tue. 
  7694.               00 01 Chat ; Chat for Wed. 
  7695.               00 01 Chat ; Chat for Thu. 
  7696.               00 01 Chat ; Chat for Fri. 
  7697.               00 01 Chat ; Chat for Sat. 
  7698.               00 01 Chat ; Chat for Sun. 
  7699.               Yes ; Check new upload for Virus Infestation 
  7700.               c:\osiris\cmds.dat 
  7701.               e:\menus
  7702.  
  7703.               Lines  must  NOT begin with a BLANK and  first  argument   
  7704.               must  have  at  least  one  BLANK  SPACE  following  it.  
  7705.  
  7706.               Line 1: The slowest baud rate you'll allow for ANSI.
  7707.  
  7708.               Line  2: Amount of FREE Memory you want  available  when   
  7709.               you do a SHELL to DOS.
  7710.  
  7711.          Osiris SE         Technical Reference Manual        Page 119
  7712.  
  7713.               Line  3: Amount of FREE Memory you want  available  when   
  7714.               you call protocol drivers.
  7715.  
  7716.               Generally speaking, 256K is enough for almost any driver.
  7717.  
  7718.               Line  4: Amount of FREE Memory you want  available  when   
  7719.               you call Archivers. Almost all archivers can function in   
  7720.               384K.
  7721.  
  7722.               Line  5: This specifies the search TYPE used during  the   
  7723.               duplicate  upload  file search. Type 0  does  a  perfect   
  7724.               match. Type 1 does a slide type match 
  7725.  
  7726.               Line  6:  Refers to the number of bytes to send  to  the   
  7727.               UART when a TX interrupt is triggered. This is ONLY used   
  7728.               if  you have a 16550 Uart installed. If you have a  fast   
  7729.               machine you may find that a lower value yields the  same   
  7730.               results  as the default 12. If you have a  slow  machine   
  7731.               (XT) or your running Desqview  you may need to  RAISE it   
  7732.               to achieve maximum speed.
  7733.  
  7734.               Line 7 : 
  7735.               Line 8 : 
  7736.               Line 9 : These lines reference the SIZE of the  Transmit   
  7737.               buffer  I'll use at different baud rates.  Valid   sizes   
  7738.               range  from  240  bytes to 8196 bytes.  The  larger  the   
  7739.               buffer, the more space I have to send characters to  the   
  7740.               modem  without being halted or slowed down by  the  baud   
  7741.               rate.
  7742.  
  7743.               Even  thou  I will SLICE time to  other  partitions,  it   
  7744.               isn't always effective if you slice away more time  than   
  7745.               it takes to empty the TX buffer.
  7746.  
  7747.               e.g.
  7748.  
  7749.               If  you're using DV and you are running 3 lines  with  a   
  7750.               combined  TIC count of 18 and you have a caller  on-line   
  7751.               at 2400 baud with a TX buffer size set to 240 characters   
  7752.               for 2400 baud.
  7753.  
  7754.               The  TX buffer will fill and the remaining time will  be   
  7755.               given to the other partitions. 240 characters, what's in   
  7756.               the  TX buffer, will be sent in 1 second at  2400  baud.   
  7757.               But,  you've sliced to the other partitions and  they'll   
  7758.               use roughly 1 second before the original partition  gets   
  7759.               any   more  time. This will cause the caller  to  get  a   
  7760.               JERKY  display.
  7761.  
  7762.               If  you're  running a multi-tasker,  I  would  recommend   
  7763.               that   your  buffer size(s) be no smaller than what   is   
  7764.               listed   above.  If you have more than 3 lines, You  may   
  7765.               need  to  make them even larger.
  7766.          Osiris SE         Technical Reference Manual        Page 120
  7767.  
  7768.               Having  LARGE  buffers does affect the caller if  he  is   
  7769.               using HOTKEYS. The closer to the MAXIMUM CPS * 1.5,  the   
  7770.               better HOTKEYS work.
  7771.  
  7772.               Tx Buffer Sizes for Hotkeys to be most effective.
  7773.  
  7774.               300/1200  : 240 (actual 180 but i don't allow one  that   
  7775.                           small) 
  7776.               2400     : 360 
  7777.               9600     : 1440
  7778.  
  7779.               If you're running DV, then you have to weight the pro(s)   
  7780.               and con(s) and decided for yourself which you want.
  7781.  
  7782.               Line  10 : By Default, I will only allow the  caller  to   
  7783.               pick  the  first character  of his or her  password  and   
  7784.               I'll  generate the remaining characters.  This  foregoes   
  7785.               having a caller use the same password on several systems   
  7786.               and makes HACKING more difficult.
  7787.  
  7788.               If  you  want  to allow the caller to  pick  the  ENTIRE   
  7789.               password, then use "Yes," otherwise, "No."
  7790.  
  7791.               Line  11: If you have EEMS 3.2 or LIM 4.0, setting  this   
  7792.               to  "YES"  allows the VMS system to do memory  swaps  to   
  7793.               high memory instead of using your disk.
  7794.  
  7795.               Line  12: Duplicate phone number checking, as  far as  I   
  7796.               can tell, serves no useful purpose. If someone is  going   
  7797.               to  have  two log on names to your system,  they  aren't   
  7798.               dumb  enough  to  use the same phone  number  for  both.  
  7799.   
  7800.               If  you  want duplicate phone  number  checking,  answer   
  7801.               "YES,"  otherwise "NO." If you're running on  a  NETWORK   
  7802.               you may want it disabled to reduce the drain on the file   
  7803.               server.
  7804.  
  7805.               LINE  13:  This  allows you to turn  off  direct  screen   
  7806.               writes in lent of a slower BIOS write. This only  serves   
  7807.               to  slow  things  down and may soon  be  removed  as  an   
  7808.               option.
  7809.  
  7810.               LINE(s)  14,  15, and 16 refer to  internal  timers,  in   
  7811.               Minute  increments. In active timer means NO input  from   
  7812.               the caller. It is suggested that you go no higher than 5   
  7813.               minutes. 
  7814.  
  7815.               New User Time Limit means the AMOUNT of time a caller is   
  7816.               given  to  FILL  OUT the new user record.  It  does  NOT   
  7817.               reference the amount of time for the CALL. 
  7818.  
  7819.  
  7820.  
  7821.          Osiris SE         Technical Reference Manual        Page 121
  7822.  
  7823.               LOG on Timer is the amount of time a caller is given  to   
  7824.               enter their name and password. It is suggested that  you   
  7825.               keep  this low, about 1 minute,  to avoid long  connects   
  7826.               with a FAX or MAIL System that may fall thought to  your   
  7827.               BBS by mistake.
  7828.  
  7829.               LINE  17:  The number of days the bulletin  system  will   
  7830.               check BACK for new bulletins for NEW CALLERS.  
  7831.  
  7832.               LINE 18: Duplicate upload search checks your Upload  and   
  7833.               Download  directories to see if the file the  caller  is   
  7834.               about to upload already exists on the system.
  7835.  
  7836.               I suggest that you always keep this set ON.
  7837.  
  7838.               LINE  19: Certain system calls under multi-taskers  such  
  7839.               as   Desqview  can  greatly  reduce the amount  of   CPU   
  7840.               time   available   to other  partitions.  Checking   the   
  7841.               keyboard,   system clock, etc. are just a  couple.  This  
  7842.               switch  allows   you  to  limit  the  number  of   times   
  7843.               Osiris   will   scan   certain  system  functions   when  
  7844.               running under Desqview.
  7845.  
  7846.               30  seems to produce about a 50 percent  speed  increase   
  7847.               when  2  lines  are in use. Higher  values  may  produce   
  7848.               better  results when more than 2 lines are being run  on   
  7849.               the  same machine. I suggest that you go no higher  than   
  7850.               90.
  7851.  
  7852.               LINE  20, 21, 22, 23 and 24 reference the  time  billing   
  7853.               system. Line 20 turns it on and off while lines 21 -  24   
  7854.               reference billing settings.
  7855.  
  7856.               LINE(s)  25  - 31 : This is where you define  the  times   
  7857.               that  you will allow Sysop Paging.
  7858.  
  7859.               The first item is the STARTING HOUR, in military  format   
  7860.               for the page. The Second item is the ENDING HOUR,  again   
  7861.               in  military format for the page. Page times must  begin   
  7862.               and end on an HOUR and MINUTES are not supported, ie. 10   
  7863.               is legal while 10:30 is not.
  7864.  
  7865.               The  third item is the name of an ASC, MMU, or ANS  file   
  7866.               to  show  if  Chat  is NOT allowed.  The  file  can  say   
  7867.               anything you like and can be different for each day.
  7868.  
  7869.               LINE  32 : Enables virus checking on new  uploads.  Each   
  7870.               new  upload  is  scanned  for  viruses  using   McAfee's   
  7871.               SCAN.EXE  program. The archive is pulled apart and  each   
  7872.               individual  program is  scanned. SCAN.EXE should  be  in   
  7873.               one of your PATHED directories.
  7874.  
  7875.  
  7876.          Osiris SE         Technical Reference Manual        Page 122
  7877.  
  7878.               The testing takes very little time, generally less  than   
  7879.               25 seconds per upload, and can save a lot of maintenance   
  7880.               time. Time that WOULD have to be spent manually  testing   
  7881.               each file.
  7882.  
  7883.               LINE  33 : Contains the full drive, path,  and  filename   
  7884.               for the language control file.
  7885.  
  7886.               Line   34 : The full drive and path to  the  ASC/MMU/ANS   
  7887.               files. This allows individual nodes on a NETWORK to keep        
  7888.               separate   copies of the menus on LOCAL hard  drives  or   
  7889.               on   an EMS/Extended Memory RAM disk. This  can  GREATLY  
  7890.               reduce  SERVER demands.
  7891.  
  7892.          Each node must have its own control file which allows you to   
  7893.          alter  node  settings  without  messing  with  command   line   
  7894.          switches.
  7895.  
  7896.          This means all available settings are laid out right in front   
  7897.          of you and you don't have to dig out the SE documentation  to   
  7898.          figure out how to set what.
  7899.  
  7900.          You  have to compile the NODExx.INI before I can use it.  The   
  7901.          Compiler option is in OSM, under MISC sub-system.
  7902.  
  7903.                                       Osm 
  7904.                                Osiris System Manager
  7905.  
  7906.                                       Overview
  7907.  
  7908.               OSM  is a GUI (Graphics User Interface) System   Manager    
  7909.               for  Osiris SE.
  7910.  
  7911.               To  run,  type  OSM  from  the  DOS  command  line,   no   
  7912.               parameters are needed.
  7913.  
  7914.                                     Main Display
  7915.  
  7916.               The    main   menu has the  following   options:   Quit,    
  7917.               File,   Msg,  Sysinfo, Misc, Dbase,  Store,  Main,   and   
  7918.               finally Access.
  7919.  
  7920.               Move  to  the option you want using  either  the   space   
  7921.               bar,   left  arrow key, or right arrow  key,  and  press   
  7922.               RETURN.
  7923.  
  7924.               Many   of  the options have  submenus  associated   with   
  7925.               them. 
  7926.  
  7927.  
  7928.  
  7929.  
  7930.  
  7931.          Osiris SE         Technical Reference Manual        Page 123
  7932.  
  7933.                                         File
  7934.  
  7935.               File   Has  two sub-menus, EDIT/VIEW  and  Area   Stats.    
  7936.               EDIT/VIEW   allows   you to edit, view,  or   add   file   
  7937.               boards.   This   option has many sub  options   of   its   
  7938.               own.
  7939.  
  7940.               Area  Stats  gives you  statistical  information   about   
  7941.               your  file areas. 
  7942.  
  7943.                                         Msg
  7944.  
  7945.               Msg   has   three sub menus:  Edit/View,  Area    Stats,    
  7946.               and  Echo Flags.
  7947.  
  7948.               EDIT/VIEW    and   Area Stats does   what   their   FILE   
  7949.               counter  parts do only with the message areas.
  7950.  
  7951.               Echo Flags allows you to reset the echo flags.
  7952.  
  7953.                                        Access
  7954.  
  7955.               You   define,   view,  and  edit   your   access   level   
  7956.               information from this section.
  7957.  
  7958.                                       Sysinfo
  7959.  
  7960.               You    define,   edit, and view  your   Osiris    System    
  7961.               information from here.
  7962.  
  7963.                                         Main
  7964.  
  7965.               Define,    edit,   and view your  main  menu    settings    
  7966.               from  this section.
  7967.  
  7968.               Before  moving  on to some of the  other  more   complex   
  7969.               main    menu  options, there's  some  information   that   
  7970.               pertains too almost  all the  functions I've spoken   on  
  7971.               so far. 
  7972.                                         Jump
  7973.  
  7974.               The    Jump   command,  found under  the   MSG,    FILE,    
  7975.               AND   ACCESS options,  allows you to go directly  to   a  
  7976.               specific  record.  In respects  to the file boards   and  
  7977.               message   boards,  a    vertical  window    will    open   
  7978.               displaying   the  names of the areas.  Use   the   arrow   
  7979.               keys,  PgDn,  PgUp, or space bar to move  to  the   area   
  7980.               you're interested in and press RETURN.
  7981.  
  7982.               When   in  the Access area, you'll simply  be  asked  to    
  7983.               enter   the   access level you want to   go   to.   Only   
  7984.               valid  access  levels will move you. If  you  enter  one  
  7985.               that isn't valid, your request will be ignored.
  7986.          Osiris SE         Technical Reference Manual        Page 124
  7987.  
  7988.                                        Clone
  7989.  
  7990.               The    Message,    File, and   Access   level   sections    
  7991.               also  have  a feature called Clone.
  7992.  
  7993.               This   duplicates  the existing record,  the  one   your    
  7994.               viewing. To reach the duplicate record, press END.
  7995.  
  7996.               The  cloning process is very fast, usually less than   a  
  7997.               second.  Because  it's  so fast and  you  may  need   to   
  7998.               quickly  clone  the record several  times,  no   message   
  7999.               that   the   cloning process was   completed   will   be   
  8000.               shown.
  8001.  
  8002.               You'll   only  get a message if  the   cloning   process   
  8003.               could NOT be completed.
  8004.  
  8005.                                         Mass
  8006.  
  8007.               The   Message  and  File board sections both   have   an    
  8008.               option called  MASS.  This allows you to  pick  out  one   
  8009.               of  the  menu command keys from a vertical  menu.   Once   
  8010.               the key has been selected,  you'll  be  asked  for   the  
  8011.               command   key  to use for  it,  the  access  level,  and   
  8012.               the  flag settings.
  8013.  
  8014.               That   key   on ALL records or boards   will   then   be   
  8015.               changed to the NEW key you've just defined.
  8016.  
  8017.                                        Delete
  8018.  
  8019.               Sub-Sections  MSG, FILE, and ACCESS will allow  you   to  
  8020.               delete  records, but you can only safely delete a   file  
  8021.               board.
  8022.  
  8023.               Deleting   an   access  level  or  Message   board   can    
  8024.               lead    to   complications if that   access   level   or   
  8025.               message board isn't the very last one listed.
  8026.  
  8027.               If  you  delete a message board from  the  middle,   all    
  8028.               HDRxx.sys  and   TXTxxx.sys files will  be  thrown  off.   
  8029.               Your    Echo    control  files,   if   you're    running   
  8030.               echomail,   will  also be thrown  off.  It's   suggested   
  8031.               that   instead   of deleting a   message   board,    you   
  8032.               raise    the  access level or set the  area   flags   so   
  8033.               that  no  one can  get to it. In other words,  save   it   
  8034.               for  reuse   or  until you  get  enough   of   them   to    
  8035.               warranty   the  additional  work  involved  in  deleting  
  8036.               message boards.
  8037.  
  8038.  
  8039.  
  8040.  
  8041.          Osiris SE         Technical Reference Manual        Page 125
  8042.  
  8043.               Deleting  an access level isn't quite as bad,  just   be   
  8044.               aware  that  the users with access level  equal  to   or   
  8045.               higher   than  the one you're going   to   delete   will     
  8046.               find   themselves   with   the   privileges   associated    
  8047.               with the next  highest  access   level  (time limits and  
  8048.               such).
  8049.  
  8050.               Delete    will   also   not allow you  to  delete    the    
  8051.               very     first   record.   This'll    keep   you    from   
  8052.               deleting  yourself to  a  zero byte file  structure  and  
  8053.               OSM doesn't like zero byte files.
  8054.  
  8055.                                        Verify
  8056.  
  8057.               The   MSG   Sub-System has an  option   called   Verify.   
  8058.               This  verifies  that  the   TXTxxx.sys   and  HDRxxx.sys    
  8059.               files   exist  for  all message boards defined.  If  one  
  8060.               doesn't, OSM will create it.
  8061.  
  8062.                              Dialog Confirmation Box's
  8063.  
  8064.               No    permanent   change  to any item   will   be   made   
  8065.               without  double checking with you. In other  words,  you   
  8066.               ALWAYS    have   the  option   of   backing    out    of   
  8067.               anything.
  8068.  
  8069.               Before     the    operation  starts,   a    dialog   box    
  8070.               will   open   with a YES/NO  continue   with   operation    
  8071.               prompt.
  8072.  
  8073.               Move  the selector, arrow keys or tab key, to NO if  you   
  8074.               want to  cancel.  Otherwise,  press RETURN  to    signal  
  8075.               OK.
  8076.  
  8077.  
  8078.  
  8079.  
  8080.  
  8081.  
  8082.  
  8083.  
  8084.  
  8085.  
  8086.  
  8087.  
  8088.  
  8089.  
  8090.  
  8091.  
  8092.  
  8093.  
  8094.  
  8095.  
  8096.          Osiris SE         Technical Reference Manual        Page 126
  8097.  
  8098.                                      Edit Mode
  8099.  
  8100.               When  selecting  to Edit a record, you'll be  place   in   
  8101.               FULL Screen FULL field editing mode.
  8102.  
  8103.                              Editing Individual Fields
  8104.  
  8105.               Backspace  * Destructive backspace to the left.
  8106.               CTRL-CURLF * Control left arrow   moves   one   word   
  8107.                            left.
  8108.               Ctrl-Currt * Control right arrow  moves   one   word   
  8109.                            right.
  8110.               Curlf      * Left arrow key   moves   one   position   
  8111.                            left.
  8112.               Currt      * Right arrow key  moves   one   position   
  8113.                            right.
  8114.               Delete     * Del (on keypad)  delete  character   under   
  8115.                            cursor.
  8116.               End        * Move cursor to end of string.
  8117.               Esc        * Clear string.
  8118.               Home       * Move to beginning of string.
  8119.               Insert     * Insert a space under cursor.
  8120.  
  8121.                                      Screen Movement
  8122.  
  8123.                    Up Arrow & Reverse Tab - Move  the   cursor    to    
  8124.                                             the  previous field. 
  8125.  
  8126.                    Down Arrow, Return, Tab - Move the cursor  to  the   
  8127.                                              next field.
  8128.  
  8129.                    Pgup & Pgdn   -  Move the cursor to the  previous  or    
  8130.                                     next  field respectively
  8131.  
  8132.  
  8133.                    Ctrl-Home & Ctrl-End  -  Move the cursor to the first    
  8134.                                             or last field respectively.
  8135.  
  8136.                    Ctrl-Return - Always End Edit Session.
  8137.  
  8138.                                        Flags
  8139.  
  8140.               Osiris  SE  is loaded with Flags. Each command  has   16   
  8141.               flags associated with it. While file areas  and  message  
  8142.               areas have 8 flags.
  8143.  
  8144.               OSM    displays  the flags as a string  of  zero's   '0'    
  8145.               and  one's '1'.
  8146.  
  8147.               A   command  key flag field will  look   somewhat   like   
  8148.               this;
  8149.  
  8150.               1000100000100000
  8151.          Osiris SE         Technical Reference Manual        Page 127
  8152.  
  8153.               To   turn  a specific flag on, change the  zero   to   a   
  8154.               one. To turn it off change the 1 to a 0.
  8155.  
  8156.               The   flags   are numbered (for  your  reference)   from    
  8157.               left  to right starting with flag #1.
  8158.  
  8159.               In    the   example  above, flags 1, 5,   and   11   are   
  8160.               turned on.
  8161.  
  8162.                                         Misc
  8163.  
  8164.               The    MISC   main  menu option   has   the    following    
  8165.               SUBSYSTEMS available:
  8166.  
  8167.                                         Protocol
  8168.  
  8169.                    Here   you  define,  edit,  delete,  or  view   the     
  8170.                    protocol    definitions    for     Osiris.     It's    
  8171.                    completely   Menu   (vertical selector)  driven  so   
  8172.                    you should have no problems using it.
  8173.  
  8174.  
  8175.                                            Sig
  8176.  
  8177.                    This    section    deals   with    defining,    
  8178.                    removing,   and  cleaning SIG  Email  conference   
  8179.                    areas.
  8180.  
  8181.                                       Com Port Defs
  8182.  
  8183.                    Replaces  the old comport.exe file and  deals  with   
  8184.                    defining com port information. This section  should   
  8185.                    RARELY  be   used  and  only  by  those  with   the   
  8186.                    technical background to understand what is  what.
  8187.  
  8188.                                    Nodexx.ini Compiler
  8189.  
  8190.                    Does   the  actual  compiling/compressing  of   the   
  8191.                    nodeXX.ini file.
  8192.  
  8193.                                           Dbase
  8194.  
  8195.                    Dbase is used to create and maintain SPL/I database   
  8196.                    systems.
  8197.  
  8198.                                          Pack Db
  8199.  
  8200.                    This  removes DELETED records and  rebalances   the    
  8201.                    Btree  indices.   You'll be asked for the  name  of    
  8202.                    the  database.
  8203.  
  8204.  
  8205.  
  8206.          Osiris SE         Technical Reference Manual        Page 128
  8207.  
  8208.                    This   is  the  FIRST part of the  name  minus  the   
  8209.                    extension.   All Dbase  functions will  supply  the   
  8210.                    needed extensions.
  8211.  
  8212.                                          Make Db
  8213.  
  8214.                    This  is the one you use to originally  define  the   
  8215.                    SPL/I  database structure.  The number and  lengths   
  8216.                    of the fields as  well  as the index field and name   
  8217.                    of the database.
  8218.  
  8219.                                          Add Db
  8220.  
  8221.                    Allows you to mass add to a Btree database using  a    
  8222.                    TEXT   formatted   control  file   containing   the   
  8223.                    information to add.
  8224.  
  8225.                    The   fields  within  this  text  file  should   be   
  8226.                    delimited by @.
  8227.  
  8228.                    All fields for a particular dbase record must be on   
  8229.                    ONE line.
  8230.  
  8231.                    Line Length isn't important.
  8232.  
  8233.                                        Mouse
  8234.  
  8235.               OSM  will  automatically detect and allow  you  to   use   
  8236.               your   mouse  for menu selection and  to  some   extent,   
  8237.               when   in  full screen or full   field    editing.   OSM   
  8238.               supports   a  two button  mouse  or   ,   preferred,   a   
  8239.               three button mouse.
  8240.  
  8241.                                      Vertical  Menus
  8242.  
  8243.                    You   can   use  your mouse to  select  the  option    
  8244.                    you   want   by moving  the inverse  bar  to   that   
  8245.                    option  and  pressing the  LEFT  mouse  button.  If    
  8246.                    you   have a 3 button mouse,  your  middle   button   
  8247.                    will   allow you  to BACK  OUT  without   selecting   
  8248.                    anything.  If you have a   2  button  mouse,  press  
  8249.                    the  ESC  key  on  your  keyboard.  Horizontal   or    
  8250.                    sometimes   referred  to as  LOTUS  style    menus.    
  8251.                    They   run ACROSS  the screen  instead  of  up  and  
  8252.                    down. 
  8253.  
  8254.  
  8255.  
  8256.  
  8257.  
  8258.  
  8259.  
  8260.  
  8261.          Osiris SE         Technical Reference Manual        Page 129
  8262.  
  8263.                    You   can   use  your mouse to  select  the  option    
  8264.                    you    want   by moving  the inverse  bar  to   the   
  8265.                    option  you  want  and  pressing  the  LEFT   mouse   
  8266.                    button.  If    you  have a 3  button  mouse,   your   
  8267.                    middle   button   will   allow you   to  BACK   OUT   
  8268.                    without   selecting   anything. If you have  a    2   
  8269.                    button  mouse, press the ESC key on your  keyboard.  
  8270.                    Standard  Menu This is the STANDARD  Keyboard  menu  
  8271.                    display   at  the bottom of a secondary screen.  It  
  8272.                    generally   consists of something like:  ESC   Edit  
  8273.                    Jump  ->  <- Delete You   can   use your  mouse  to   
  8274.                    select   one  of   these   options  by moving   the  
  8275.                    mouse   pointer  to  the  TEXT or within one  space    
  8276.                    on   either   side  and  pressing  the  LEFT  mouse  
  8277.                    button.  If   the text is enclosed within  a   box,   
  8278.                    just   move    INSIDE   the box  and   click   your   
  8279.                    left  mouse button.
  8280.  
  8281.                                          Editing 
  8282.   
  8283.                    When  you are required to actual EDIT a  field   or  
  8284.                    record,   your mouse  buttons  can be  used,   even  
  8285.                    thou you will not  see  any type of MOUSE   CURSOR.  
  8286.                    Left   Button   : Acts as if you  had  pressed  the   
  8287.                    Enter   Key   on your  keyboard. Can  be  used   to   
  8288.                    page   THROUGH  fields to get  to  the   one    you    
  8289.                    want  or  to  accept what's in   the  field.  RIGHT    
  8290.                    Button    :   This  can be used   to   QUIT    edit    
  8291.                    mode.   It's  similar to  pressing   CTRL-  RETURN.  
  8292.                    Middle   Button  : This will  CLEAR   the   current   
  8293.                    field.  If you  do NOT  have a Middle  Button,  you  
  8294.                    will have to press ESC on  the keyboard. 
  8295.  
  8296.                                     Confirmation Box 
  8297.   
  8298.                    After    editing/changing    some   fields,     you    
  8299.                    will    get    a Confirmation  box  on  the  screen   
  8300.                    asking if you really want  to save  the data.
  8301.  
  8302.   
  8303.                    Just move the mouse cursor to the OK or CANCEL  box  
  8304.                    and  click the LEFT mouse button. 
  8305.  
  8306.                                     Cat.exe 
  8307.                        Osiris Robot Maintenance system. 
  8308.  
  8309.          Cat's the Osiris Robot maintenance system. It handles all the   
  8310.          GRUNT  work  of cleaning and verifying  message  areas,  file   
  8311.          areas, sorting file areas, converting archive formats, etc.
  8312.  
  8313.          You should run CAT once a day or once every two days to  keep   
  8314.          your system in top form.
  8315.  
  8316.          Osiris SE         Technical Reference Manual        Page 130
  8317.  
  8318.                                 Cat's Report To You
  8319.  
  8320.               Every  time CAT's run, it will generate a system  report   
  8321.               and place it in the message center, addressed to you.
  8322.  
  8323.               The  report will list everything CAT did during its  run   
  8324.               and look something like this.
  8325.  
  8326.  
  8327.  
  8328.  
  8329.  
  8330.  
  8331.  
  8332.  
  8333.  
  8334.  
  8335.  
  8336.  
  8337.  
  8338.  
  8339.  
  8340.  
  8341.  
  8342.  
  8343.  
  8344.  
  8345.  
  8346.  
  8347.  
  8348.  
  8349.  
  8350.  
  8351.  
  8352.  
  8353.  
  8354.  
  8355.  
  8356.  
  8357.  
  8358.  
  8359.  
  8360.  
  8361.  
  8362.  
  8363.  
  8364.  
  8365.  
  8366.  
  8367.  
  8368.  
  8369.  
  8370.  
  8371.          Osiris SE         Technical Reference Manual        Page 131
  8372.  
  8373.          Message Center Mail : Delete Received after 10 Days 
  8374.                                Delete Un-Read  after 45 Days
  8375.  
  8376.          ~ Validating Msg Areas and Message Pointers. 
  8377.          ~ Packing Message Center. 
  8378.          ~ Relinking Reply Threads. 
  8379.          ~ Relinking User Records. 
  8380.          ~ Rebuilding Mail Index File(s). 
  8381.          ~ Scanning Upload Directories for NON-LZH Archives. 
  8382.          ~ Checking Osiris SE Rev 2.02. 
  8383.          { Converted Oilcap2.zip to Oilcap2.Lzh. 
  8384.          ~ Checking Isis, Intergrated mailer. 
  8385.          ~ Checking Registration Keys. 
  8386.          ~ Checking Bug/Sug.Frms Go Here. 
  8387.          ~ Checking Archivers. 
  8388.          ~ Checking Odds & Ends. 
  8389.          ~ Checking Games. 
  8390.          ~ Checking Beta *Use at YOUR Risk*. 
  8391.          ~ Sorting By Date (Descending Order). 
  8392.          ~ Sorting Osiris SE Rev 2.02. 
  8393.          ~ Area Contains 38 Downloadable Files. 
  8394.          ~ Sorting Isis, Intergrated mailer. 
  8395.          ~ Area Contains 4 Downloadable Files. 
  8396.          ~ Sorting Protocol Drivers/Qt 2000. 
  8397.          ~ Area Contains 11 Downloadable Files. 
  8398.          ~ Sorting NAMvet Newsletter(s). 
  8399.          ~ Area Contains 5 Downloadable Files. 
  8400.          ~ Sorting Arcshell, Ultimate Archive Utl. 
  8401.          ~ Area Contains 1 Downloadable Files. 
  8402.          ~ Sorting Registration Keys. 
  8403.          ~ Area Contains 0 Downloadable Files. 
  8404.          ~ Sorting Odds & Ends. 
  8405.          ~ Area Contains 21 Downloadable Files. 
  8406.          ~ Sorting Games. 
  8407.          ~ Area Contains 25 Downloadable Files. 
  8408.          ~ Sorting Beta *Use at YOUR Risk*. 
  8409.          ~ Area Contains 6 Downloadable Files. 
  8410.          ~ System Has 117 Downloadable Files. 
  8411.          ~ Indexing Download Area(s). 
  8412.          ~ Indexing UPload Area(s). 
  8413.          ~ Creating Download AREA Index. 
  8414.          { Warning : Area 6 Empty. 
  8415.          { Warning : Area 7 Empty. 
  8416.          ~ Packing History Log For Node # 1. 
  8417.            Entries IN 402 : Entries OUT 374. 
  8418.          ~ Doing File Integrity Check. 
  8419.          ~ Scanning  System  for Known Viruses. 
  8420.          ~ No VIRUS Found. 
  8421.          ~ Doing File  Integrity  Check.  
  8422.                {  
  8423.                 C:\AUXPRGS\TNTBBS.EXE Failed Integrity Check!
  8424.  
  8425.  
  8426.          Osiris SE         Technical Reference Manual        Page 132
  8427.  
  8428.                                       Cat.cfg
  8429.  
  8430.               Cat  requires a control file to tell it WHAT to do.  The   
  8431.               name  of the control file is CAT.CFG (A default  CAT.CFG   
  8432.               is included) and must be in the OSIRIS= directory.
  8433.  
  8434.               CAT.CFG contains :
  8435.  
  8436.               Delete received 10
  8437.               Delete OLD files <Day of Month> <Days Not Downloaded>
  8438.               Make Filelist <CTRL FILENAME> <HEADER FILE> <ARCHIVE COMMAND> 
  8439.               delete unread 30  
  8440.               Conference Stats <DAY OF WEEK> 
  8441.               Check Message Areas <DAY OF WEEK> 
  8442.               Backup Message Center <DAY OF WEEK> 
  8443.               Backup Files.Dat <DAY OF WEEK> 
  8444.               Backup User Records <DAY OF WEEK> 
  8445.               Rebuild Files.qbs Indices <DAY OF WEEK> 
  8446.               File Sort Type 6 <DAY OF WEEK> 
  8447.               ; 
  8448.               ; File Sort Type's are as Follows . . .  
  8449.               ;  0 = No Sort 
  8450.               ;  1 = Sort By Name (Ascending Order) 
  8451.               ;  2 = Sort By Name (Descending Order) 
  8452.               ;  3 = Sort By Size (Ascending Order) 
  8453.               ;  4 = Sort By Size (Descending Order) 
  8454.               ;  5 = Sort By Date (Ascending Order) 
  8455.               ;  6 = Sort By Date (Descending Order); 
  8456.               Archive Type 1 <DAY OF WEEK> 
  8457.               ; Archive Type's are as Follows . . . .          
  8458.               ; 
  8459.               ; 0 No Conversion. 
  8460.               ; 1 Lharc (Uses LHARC.exe) 
  8461.               ; 2 Arj (Uses ARJ.EXE) 
  8462.               ; 3 Zip (Uses Pkzip/Pkunzip.exe) 
  8463.               ; Archives MUST be in one of the directories defined in 
  8464.               ; your PATH= statement. 
  8465.               History 1 
  8466.               ; 
  8467.               ; 
  8468.               Delete Old Bulletins <DAYS OLD> 
  8469.               Run External <FILENAME> <DAY OF WEEK> 
  8470.               Post Conference <DAY OF MONTH> <AREA> <FILE> <SUBJECT> 
  8471.               Post Bulletin <DAY OF MONTH> <FILE> <SUBJECT> 
  8472.               Delete User Records <Day of Month> <Days Old> 
  8473.          VIRUS CHECK SCAN C: D: E: /NOPAUSE /REPORT C:\OSIRIS\VIRUS.MSG /M 
  8474.          VIRUS CHECK TBSCAN C: D: E: -allmem -log -batch 
  8475.          TEST E:OVL01819.EXE 13457893123
  8476.  
  8477.  
  8478.  
  8479.  
  8480.  
  8481.          Osiris SE         Technical Reference Manual        Page 133
  8482.  
  8483.                                     Explanation
  8484.  
  8485.                                       <Day Of Week>
  8486.  
  8487.                    Several  of the CAT.CFG commands were  followed  by  
  8488.                    <DAY  OF  WEEK>.  This is the day or days you  want  
  8489.                    CAT to  execute  this particular command.
  8490.  
  8491.                    Valid day of week designators are: 
  8492.  
  8493.                    MON 
  8494.                    TUE 
  8495.                    WED 
  8496.                    THU 
  8497.                    FRI 
  8498.                    SAT 
  8499.                    SUN
  8500.  
  8501.                    You may stack multiple days on the same line.
  8502.  
  8503.                    E.g., Check Message Areas MON WED FRI
  8504.  
  8505.                                      <Day Of Month>
  8506.  
  8507.                    Several options require a DAY of the MONTH to run. 
  8508.  
  8509.                    E.g., Delete User Records 1 185
  8510.  
  8511.                    Cat will delete users on the 1st day of the month. 
  8512.  
  8513.                    Although  you  may  NOT  stack  day  of  the  month  
  8514.                    designators,   you  may use multiple lines  if  you  
  8515.                    want to run  it  more  than once a month.
  8516.  
  8517.                    E.g. Delete User Records 1 185 
  8518.                         Delete User Records 15 185
  8519.  
  8520.  
  8521.                    Cat will delete users on the 1st or the 15th.
  8522.  
  8523.  
  8524.                                      Delete Received 
  8525.                                          1 - 365
  8526.  
  8527.                    References  the  number  of  days  to   allow   
  8528.                    RECEIVED messages to remain in the message  center.  
  8529.  
  8530.                    See sample CAT.CFG for proper settings.
  8531.  
  8532.  
  8533.  
  8534.  
  8535.  
  8536.          Osiris SE         Technical Reference Manual        Page 134
  8537.  
  8538.  
  8539.                                       Delete Unread 
  8540.                                          1 - 365
  8541.  
  8542.                    This is the number of days you want to allow UNREAD   
  8543.                    messages to remain in the message center. I'll  NOT   
  8544.                    delete  any  message  as long as it  still  has  an   
  8545.                    active file attach.
  8546.  
  8547.                                   Backup Message Center 
  8548.                                       <DAYS TO RUN>
  8549.  
  8550.                    You  have  the  option of having  the  two  MESSAGE   
  8551.                    CENTER  databases  backed up to a  ZIP  file.  I'll   
  8552.                    make  a COPY of the two files, but I'll use a  file   
  8553.                    extension  based  on  the  JULIAN  date.
  8554.  
  8555.  
  8556.                    E.g. Backup Message Center MON WED FRI 
  8557.                         Backup Message Center FRI
  8558.  
  8559.                    If  you do not want to backup the  message  center,   
  8560.                    simply  leave  this command out of the  cat.cfg  or   
  8561.                    comment it out by placing a semi-colon in column 0.
  8562.  
  8563.  
  8564.                                     Backup Files.dat 
  8565.                                      <DAY(s) TO RUN>
  8566.  
  8567.                    Gives  you  the  option  of  having  the  secondary   
  8568.                    FILES.DAT file backed up to a ZIP file. I'll make a   
  8569.                    COPY  of  the file, but I'll use a  file  extension   
  8570.                    based  on  the  JULIAN date.   
  8571.                     
  8572.                    E.g. Backup Files.Dat MON WED FRI 
  8573.                         Backup Files.Dat FRI
  8574.  
  8575.                    If you do not want to backup the Files.Dat,  simply   
  8576.                    leave this command out of the cat.cfg or comment it   
  8577.                    out by placing a semi-colon in column 0.
  8578.  
  8579.  
  8580.                                    Backup User Records 
  8581.                                       <DAYS TO RUN>
  8582.  
  8583.                    Gives  you  the option of having the  user  records   
  8584.                    backed  up to a ZIP file. I'll make a COPY  of  the   
  8585.                    file,  but I'll use a file extension based  on  the   
  8586.                    JULIAN  date. 
  8587.  
  8588.                    E.g. Backup User Records MON WED FRI 
  8589.                         Backup User Records FRI
  8590.  
  8591.          Osiris SE         Technical Reference Manual        Page 135
  8592.  
  8593.  
  8594.                    If  you  do not want to backup  the  user  records,   
  8595.                    simply leave this command out of cat.cfg or comment   
  8596.                    it out by placing a semi-colon in column 0.
  8597.  
  8598.                    All  BACKUPS  will  be  placed  in  a  file  called   
  8599.                    "BACKUPS.ZIP."
  8600.  
  8601.  
  8602.                                 Rebuild Files.qbs Indices 
  8603.                                       <DAYS TO RUN>
  8604.  
  8605.                    This  tells me to rebuild the secondary file  index   
  8606.                    system.  Since  we've  been  using  this  secondary   
  8607.                    indexing system, I've never heard of one going bad.   
  8608.                    Because  of  this, I don't think you  should  worry   
  8609.                    about having this rebuilt every single day. 
  8610.  
  8611.                    E.g. Rebuild Files.Qbs Indices MON WED FRI 
  8612.                         Rebuild Files.Qbs Indices FRI
  8613.  
  8614.  
  8615.                                      File Sort Type 
  8616.                                           0 - 6 
  8617.                                       <DAYS TO RUN>
  8618.  
  8619.                    If you want your DOWNLOAD areas sorted, select  the   
  8620.                    SORT method (listed above). If you don't, set it to   
  8621.                    Zero.
  8622.  
  8623.                    During  the SORT operation, I'll also FIX  all  the   
  8624.                    file  listings  for that area. By FIX I  mean  I'll   
  8625.                    convert  the file name and the file description  to   
  8626.                    BBS CASE to give the system a uniformed look. 
  8627.  
  8628.                    I'll  also  strip any LEADING  and  TRAILING  blank   
  8629.                    spaces from the description field.
  8630.  
  8631.                    E.g. File Sort Type 1 MON WED FRI 
  8632.                         File Sort Type 1 FRI
  8633.  
  8634.                    I'd  recommend that you only do this on the  day(s)   
  8635.                    you  move new uploads to their respective  download   
  8636.                    areas.
  8637.  
  8638.                    Running  it when you don't or haven't moved in  new   
  8639.                    uploads  serves no useful purpose after  the  first   
  8640.                    time.
  8641.  
  8642.                    Running the sort feature will automatically  engage   
  8643.                    Rebuild Files.Qbs Indices even if it wasn't set  to   
  8644.                    run on that particular day.
  8645.  
  8646.          Osiris SE         Technical Reference Manual        Page 136
  8647.  
  8648.                                       Archive Type 
  8649.                                       0, 1, 2, or 3 
  8650.                                       <DAYS TO RUN>
  8651.  
  8652.                    Here  you define the default archive type, if  any,   
  8653.                    and  the day or days of the week you want  this  to   
  8654.                    run. 
  8655.   
  8656.                    This is the archive format you want all new uploads   
  8657.                    to be placed in.
  8658.  
  8659.                    Cat  will scan your upload directories and  convert   
  8660.                    any file not in the proper format.
  8661.  
  8662.                    I suggest, for the sake of speed and time, that you   
  8663.                    set  this  to run on the day or days  you  plan  on   
  8664.                    moving  new  uploads to their  respective  download   
  8665.                    areas.
  8666.  
  8667.                    E.g. Archive Type 1 MON WED FRI 
  8668.                         Archive Type 1 FRI
  8669.  
  8670.                    Running   the   archive   convert   feature    will   
  8671.                    automatically engage Rebuild Files.Qbs Indices even   
  8672.                    if it wasn't set to run on that particular day.
  8673.  
  8674.                                    Check Message Areas 
  8675.                                       <DAY OF WEEK>
  8676.  
  8677.                    Each  time you run Cat, I'll validate  the  message   
  8678.                    base pointers for each area. If any message base is   
  8679.                    missing, I'll create it.
  8680.  
  8681.                    Every  time you define a new message area, in  OSM,   
  8682.                    you  were asked to define a pack level and  a  pack   
  8683.                    trigger level.
  8684.  
  8685.                    When  I see an area that exceeds the  pack  trigger   
  8686.                    level,  I'll trim the area back to the pack  level.   
  8687.                    This  keeps  the individual message bases  down  to   
  8688.                    size.
  8689.  
  8690.                    When  an  area  has  deleted  messages,  I'll  also   
  8691.                    PACK the area to get rid of the messages. 
  8692.                     
  8693.                    Validating the pointers needs to be done on a daily   
  8694.                    bases.  Not that they are easy to get off, but   it   
  8695.                    is best, especially when echomail is involved,  not   
  8696.                    to take chances.
  8697.  
  8698.  
  8699.  
  8700.  
  8701.          Osiris SE         Technical Reference Manual        Page 137
  8702.  
  8703.                    However, you may NOT need the pack trigger level or   
  8704.                    the  deleted  messages checked  every  single  day.   
  8705.                    Especially  if you have enough hard drive space  to   
  8706.                    allow them to go OVER the trigger level.
  8707.  
  8708.                    The  reason you may want to relax this part of  the   
  8709.                    check is disk fragmentation. Packing a message area   
  8710.                    does generate some fragmentation and can take a lot   
  8711.                    of  time, specially if you keep a lot  of  messages   
  8712.                    on-line.
  8713.  
  8714.                    Check Message Areas <DAYS TO RUN> is used to govern   
  8715.                    this  part of the message area maintenance  section   
  8716.                    in Cat.
  8717.  
  8718.                    I  will only TEST the Trigger levels and watch  for   
  8719.                    deleted messages on the day or days you specify.
  8720.  
  8721.                    Of  course,  if  you handle a LOT  of  echomail  or   
  8722.                    you   have  a marginal amount of free  disk  space,   
  8723.                    you  may need to do it every day.
  8724.  
  8725.                    E.g., Check Message Areas Mon Wed Fri 
  8726.                          Check Message Areas Sun
  8727.  
  8728.                                          History 
  8729.                                          1 - 255
  8730.  
  8731.                    This  is  how I find out WHICH HISTxx.LOG  file  to   
  8732.                    keep trimmed back to 14 days.
  8733.  
  8734.                    You  supply the NODE number following the key  word   
  8735.                    HISTORY.
  8736.  
  8737.                    e.g. HISTORY 1 
  8738.                         HISTORY 2 
  8739.                         HISTORY 3
  8740.  
  8741.                    You  can have up to 255 HISTORY commands listed  in   
  8742.                    CAT.CFG
  8743.  
  8744.                                   Delete Old Bulletins 
  8745.                                        <DAYS OLD>
  8746.  
  8747.                    This references the SYSTEM bulletins you've  posted   
  8748.                    using  Bullgen. Cat will delete all  the  bulletins   
  8749.                    that are older than <DAYS OLD>.
  8750.  
  8751.                    E.g., Delete Old Bulletins 21
  8752.  
  8753.                    Remove bulletins older than 21 days.
  8754.  
  8755.  
  8756.          Osiris SE         Technical Reference Manual        Page 138
  8757.  
  8758.                                   Delete User Records 
  8759.                                      <Day of Month> 
  8760.                                  <Days Without Calling>
  8761.  
  8762.  
  8763.                    Allows  cat to keep your user records trimmed  down   
  8764.                    to size by deleting inactive users. Inactive  being   
  8765.                    defined  as  "Users that haven't called  within  XX   
  8766.                    days."
  8767.  
  8768.                    <Day of the Month> is the day, integer format  from   
  8769.                    1 to 31, of the month.
  8770.  
  8771.                    If you want to run the check on more than one  day,   
  8772.                    you can have multiple "Delete User Records"  listed   
  8773.                    in the cat.cfg file.
  8774.  
  8775.                    E.g., Delete User Records 1 185
  8776.  
  8777.                    Check the user records on the 1st of the month  and   
  8778.                    delete  anyone  that  hasn't called  in  185  days,   
  8779.                    roughly 6 months.
  8780.  
  8781.                                      Post Conference 
  8782.                                      <Day of Month> 
  8783.                                          <Area> 
  8784.                                          <File> 
  8785.                                         <Subject>
  8786.  
  8787.                    This  lets you automate the posting of  a  specific   
  8788.                    message, like echo area rules, on a particular  day   
  8789.                    of the month.
  8790.  
  8791.                    <Day of Month> is the day, integer from 1 to 31, of   
  8792.                    the month to post the message.
  8793.  
  8794.                    <Area>  is  the Conference message area, 1  to  the   
  8795.                    highest  area  you  have defined,  the  message  is   
  8796.                    suppose to go in.
  8797.  
  8798.                    <File> is the name of a text file, one created with   
  8799.                    MKPOST.EXE, that contains the body of the message.
  8800.  
  8801.                    <SUBJECT> is the text you want used as the  SUBJECT   
  8802.                    of  the message. Do NOT exceed 38 characters. I  do   
  8803.                    not check this and if you exceed 38 characters  you   
  8804.                    will corrupt the message area.
  8805.  
  8806.  
  8807.  
  8808.  
  8809.  
  8810.  
  8811.          Osiris SE         Technical Reference Manual        Page 139
  8812.  
  8813.                    E.g.,  
  8814.  
  8815.                    Post Conference 1 10 c:\osi\rules.txt Echo Area Rules
  8816.  
  8817.                    On the 1st of the month post a message in area  10.   
  8818.                    Use the text file c:\osi\rules.txt for the  message   
  8819.                    body  and use "Echo Area Rules" as the  subject  of   
  8820.                    the message.
  8821.  
  8822.                    There   is  no  limit  to  the  number   of   "post   
  8823.                    conference"  commands you can have in your  cat.cfg   
  8824.                    file.
  8825.  
  8826.                                       Post Bulletin 
  8827.                                      <Day of Month> 
  8828.                                          <File> 
  8829.                                         <Subject>
  8830.  
  8831.                    This lets you automate the posting or reposting  of   
  8832.                    a specific system bulletin, like system rules, on a   
  8833.                    particular day of the month.
  8834.  
  8835.                    <Day of Month> is the day, integer from 1 to 31, of   
  8836.                    the month to post the bulletin.
  8837.  
  8838.                    <File> is the name of a text file, one created with   
  8839.                    MKPOST.EXE,   contains  the  body  of  the   system   
  8840.                    bulletin.
  8841.  
  8842.                    <SUBJECT> is the text you want used as the SUBJECT.   
  8843.                    Do  NOT exceed 38 characters. I do not  check  this   
  8844.                    and  if you exceed 38 characters you  will  corrupt   
  8845.                    the message area.
  8846.  
  8847.  
  8848.                    E.g.,  
  8849.  
  8850.                    Post Bulletin 15 c:\osi\Sysrules.txt System Rules
  8851.  
  8852.                    On the 15th of the month post a message in area  10.   
  8853.                    Use  the  text  file  c:\osi\Sysrules.txt  for  the   
  8854.                    bulletins  body  and  use  "System  Rules"  as  the   
  8855.                    subject.
  8856.  
  8857.                    There is no limit to the number of "post  bulletin"   
  8858.                    commands you can have in your cat.cfg file.
  8859.  
  8860.                                     Conference Stats 
  8861.                                       <Day of Week>
  8862.  
  8863.                    Adds  a fairly detailed report on  your  conference   
  8864.                    message area usage; who, what, when, how many, etc.    
  8865.                    to the daily maintenance report. 
  8866.          Osiris SE         Technical Reference Manual        Page 140
  8867.  
  8868.                                     Delete Old Files
  8869.                                      <Day of Month> 
  8870.                                   <Days Not Downloaded>
  8871.  
  8872.                    This option certainly isn't for everyone and if you  
  8873.                    don't want to use it, don't include the command  in  
  8874.                    your cat.cfg file.
  8875.  
  8876.                    This  option scans the download file areas on  <Day  
  8877.                    of  Month>  and deletes any file that  hasn't  been  
  8878.                    downloaded in <Days Not Downloaded>.
  8879.  
  8880.                    This  conserves diskspace by removing files  people  
  8881.                    don't  want. If they aren't downloading  the  file,  
  8882.                    there is no point in taking up valuable disk  space  
  8883.                    storing it.
  8884.  
  8885.                    E.g. Delete OLD Files 30 185
  8886.  
  8887.                    On the 30th day of the month, delete any file  that  
  8888.                    hasn't  been  downloaded  in 185  days,  roughly  6  
  8889.                    months.
  8890.  
  8891.                    In  order for a particular file area to be  scanned  
  8892.                    ,  you  must set Applications Flag  1(ONE)  ON.  On   
  8893.                    means  putting a 1 in the first slot. You can  find  
  8894.                    the  Applications Flag in the  Filboard  definition  
  8895.                    record for that area, use OSM.
  8896.  
  8897.                    E.g. 1000000000000000
  8898.  
  8899.                    If the flag isn't on, CAT will not check that  file  
  8900.                    area.
  8901.  
  8902.                    This   lets   you  "DELETE  OLD  FILES"   in   some  
  8903.                    file areas while excluding files in another area.
  8904.  
  8905.                                       Make Filelist
  8906.                                      <CTRL FILENAME> 
  8907.                                       <HEADER FILE> 
  8908.                                     <ARCHIVE COMMAND>
  8909.  
  8910.                     The  Make  Filelist  Option   generates   a   TEXT  
  8911.                    listing  of  selected FILES.QBS files.
  8912.  
  8913.                    This  is  generally used as a File Request list  or   
  8914.                    to  offer callers a text listing they can down load  
  8915.                    and read off line.
  8916.  
  8917.                    'Make  Filelist'  requires  a  control  file,   you  
  8918.                    can  pickout the name and it is the FIRST  argument  
  8919.                    following the KEY Phrase "Make FileList".
  8920.  
  8921.          Osiris SE         Technical Reference Manual        Page 141
  8922.  
  8923.                    The control file contains two lines. The first line  
  8924.                    is  the full drive, path, and file name that is  to  
  8925.                    be used for the TEXT listings.
  8926.  
  8927.                     E.g. c:\osiris\files\filelist.txt
  8928.  
  8929.                    The  second line contains a list of the Osiris File  
  8930.                    areas   to  add  to  the  TEXT  listing.  The  list  
  8931.                    consists  of  the  numeric area number, up to  500,  
  8932.                    separated  by a blank space. All areas MUST fit  on  
  8933.                    ONE line.
  8934.  
  8935.                    e.g. 1 2 3 4 8 11 23
  8936.  
  8937.                     Example of a control file
  8938.  
  8939.                     c:\osiris\files\general\filelist.txt
  8940.                     1 2 3 4 5 6 8 9 10 11 12 13
  8941.                     <EOF>
  8942.  
  8943.                    The  second argument is the name of a  text  HEADER  
  8944.                    file  to insert at the TOP of the list. This   file  
  8945.                    may  contain almost anything but is generally  used  
  8946.                    to display the name of your BBS.
  8947.  
  8948.                    The  third  and  final  argument  is  the  complete  
  8949.                    archiving instructions.
  8950.  
  8951.                    E.g. arj m -e -jm d:\general\filelist filelist.txt
  8952.  
  8953.                    Example of a complete Make FIlelist statement
  8954.  
  8955.   Make Filelist Flist.ctl fist.hdr arj m -e  -jm d:\flist filelist.txt
  8956.  
  8957.                    You  can add multiple "MAKE FILELIST"  commands  to  
  8958.                    the  cat.cfg  file if you want to  create  MULTIPLE  
  8959.                    listings.
  8960.  
  8961.                                       Run External 
  8962.                                        <Filename> 
  8963.                                       <Days to Run>
  8964.  
  8965.                    You  may have applications or maintenance  programs   
  8966.                    that  are  not directly related Osiris  that  you'd   
  8967.                    like to run on a scheduled bases.
  8968.  
  8969.                    "Run  External"  allows  you  to  define  programs,   
  8970.                    generally  batch files, along with the day or  days   
  8971.                    of the week you want them to run.
  8972.  
  8973.  
  8974.  
  8975.  
  8976.          Osiris SE         Technical Reference Manual        Page 142
  8977.  
  8978.                    There is no limit to the number of programs you can   
  8979.                    define  and  they will have at least 512K  of  free   
  8980.                    memory  to run, providing you had 512K free  BEFORE   
  8981.                    you ran cat.
  8982.  
  8983.                    E.g. Run External HDMAINT.BAT MON WED SAT
  8984.  
  8985.                                        Virus Check
  8986.  
  8987.                    If  you  want a SYSTEM wide virus scan  run  during   
  8988.                    your maintenance event, use this verb.
  8989.  
  8990.                    Place  the name of the virus checking  program  and   
  8991.                    any  command line settings following the key  words   
  8992.                    VIRUS CHECK.
  8993.  
  8994.                    I've defined TWO for you, one for Mcafee's SCAN.EXE   
  8995.                    and one for TBSCAN.COM.
  8996.  
  8997.                    Uncomment  the one you want to use and edit to suit   
  8998.                    your system.
  8999.  
  9000.                    You'll  need to change the " C: D: E:" to go  along   
  9001.                    with YOUR drives. You     may    also    need    to     
  9002.                    change     the  "C:\OSIRIS\VIRUS.MSG".  This is the   
  9003.                    file   SCAN.EXE   uses to LOG any  files  that  may  
  9004.                    contain  a virus. TBSCAN.COM will use  "TBSCAN.LOG"  
  9005.                    and you'll find it  in your OSIRIS= directory.
  9006.  
  9007.                    You  may  define a TOTALLY new program  to  replace   
  9008.                    either  of  these.  Just include the  name  of  the   
  9009.                    program along with any command line switches.
  9010.  
  9011.                    There are two restrictions. The program must return   
  9012.                    error  level  0 if no viruses were found.  It  must   
  9013.                    return 1 or higher if a virus WAS found.
  9014.  
  9015.                    The  command  line,  including  the  name  of   the   
  9016.                    program, can't exceed 128 characters.
  9017.  
  9018.                                         Disadvantages!
  9019.  
  9020.                         Virus     scanners    have    several     very     
  9021.                         serious    disadvantages!  They    can    only   
  9022.                         recognize    viruses   that   have     already    
  9023.                         been   identified.  When a   new   virus   has    
  9024.                         been  launched  it  will take a  while  before   
  9025.                         someone   discovers  it.  After that  it  will   
  9026.                         take    sometime  before a reliable  signature   
  9027.                         is  distilled from  the   virus  and  it  will  
  9028.                         also be a while before  you  can  get the  new  
  9029.                         scanner.
  9030.  
  9031.          Osiris SE         Technical Reference Manual        Page 143
  9032.  
  9033.                          All   this  means  that  there  is   a   real  
  9034.                         chance  that your system is infected  at  this   
  9035.                         moment  by  a  virus  the scanners  have   not    
  9036.                         yet  recognized! Because of all the  attention  
  9037.                         the   media  is  paying   to    the   computer  
  9038.                         virus,  it  has  become  a   real  sport   for  
  9039.                         sick   minds  to   write  computer    viruses.    
  9040.                         Even     viruses   that   have   no     stable    
  9041.                         signature       have       already        been     
  9042.                         discovered.    Some    Virus   scanners  allow  
  9043.                         wild  cards in the signature and   can   still  
  9044.                         trace this kind of  viruses, some times.   But   
  9045.                         it   will    not  be   long   before   viruses   
  9046.                         will   be    created  that  have  no   special   
  9047.                         characteristics   by    which  they   can   be  
  9048.                         identified.   The  solution  to  this  problem   
  9049.                         is  the  CAT  FILE  INTEGRITY SYSTEM.
  9050.  
  9051.                                 Cat File Integrity System
  9052.  
  9053.                    This  engages  the CAT FILE INTEGRITY  system.  Cat   
  9054.                    will  computer an Integrity checksum for  the  file   
  9055.                    you've   defined  and  if  it  doesn't  match   the   
  9056.                    integrity  checksum  you've  listed,  it  will   be   
  9057.                    flagged as infected with an Unknown virus. One  the   
  9058.                    virus checker didn't know about.
  9059.  
  9060.                    You  define  a  file by using the  key  work  TEST.   
  9061.                    Following  TEST include the FULL drive,  path,  and   
  9062.                    the  name  of the file to check and  the  Integrity   
  9063.                    Checksum for that file.
  9064.  
  9065.                    e.g. TEST C:\OSIRIS\OSM.EXE 3459123475
  9066.  
  9067.                    There  is no limit on the number of files  you  can   
  9068.                    define for testing. 
  9069.                     
  9070.                    There  are several advantages to using this  system   
  9071.                    over  the  normal virus check  (SCAN.EXE).  It  can   
  9072.                    detect  changes  in a file and it doesn't  have  to   
  9073.                    know  anything  about the virus that  did  it.  New   
  9074.                    virus   comes  along,  doesn't  matter.  It'll   be   
  9075.                    detected  if it does anything to the  files  you've   
  9076.                    defined.
  9077.  
  9078.                    The  2nd big advantage is speed. This system is  10   
  9079.                    to  20  times faster than using SCAN.EXE  to  do  a   
  9080.                    system wide virus scan.
  9081.  
  9082.  
  9083.  
  9084.  
  9085.  
  9086.          Osiris SE         Technical Reference Manual        Page 144
  9087.  
  9088.                                           Chksum.exe
  9089.  
  9090.                         Chksum.exe   can  be  used  to  generate   the   
  9091.                         file's  original  integrity checksum.
  9092.  
  9093.                         Chksum.exe   requires  one of  three  possible   
  9094.                         command  line switches.
  9095.  
  9096.                         /Ffilename   : Computer  a   file   integrity  
  9097.                                        checksum  on  "filename." 
  9098.  
  9099.                         eg. /FC:\OSIRIS\CAT.EXE
  9100.  
  9101.                         If  this  switch is used, the  file  integrity  
  9102.                         checksum   will  be displayed on  the  screen.  
  9103.                         Write  it  down  and  manually  edit  the  cat  
  9104.                         control  file and add the file  name  and  the  
  9105.                         integrity checksum.
  9106.  
  9107.                         /Cfilename  : Use the CONTROL file  "filename"  
  9108.                                       to  obtain the names of the 
  9109.                                       files.
  9110.  
  9111.                         The  control  file is a text based  file  with   
  9112.                         a  complete drive, path, and filename. One per  
  9113.                         line.
  9114.  
  9115.                         Instead   of  printing the checksums  on   the   
  9116.                         screen,   I'll   place  them in  a  text  file  
  9117.                         called   CHKSUM.DAT.   If  chksum.dat  already  
  9118.                         exists, I'll append to it.
  9119.  
  9120.                         The   entries  in  Chksum.dat  will  be   PRE- 
  9121.                         FORMATTED    so   you   can   simply    IMPORT  
  9122.                         chksum.dat  into  the  cat  control file.
  9123.  
  9124.                         eg. Chksum /Cfile.ctl
  9125.  
  9126.                         /SDRIVE :  Analyze  the  drive and build    a   
  9127.                         chksum.dat   file containing the full   drive,   
  9128.                         path,   filename,  and the integrity  checksum  
  9129.                         for  all  COM,  EXE,   OVL,  and   OVR   files   
  9130.                         on   the   system.    If   chksum.dat  already  
  9131.                         exists, I'll append to it. 
  9132.  
  9133.                         This  is  the QUICKEST method of  getting  all   
  9134.                         the   executable  files and overlays, ovl  and  
  9135.                         ovr,  added  to the cat control file.
  9136.  
  9137.                         You  will  also need to  MANUALLY,  using  /F,   
  9138.                         generate  integrity  checksums for EVERY  file  
  9139.                         listed in  your  CONFIG.SYS.
  9140.  
  9141.          Osiris SE         Technical Reference Manual        Page 145
  9142.  
  9143.                         The    entries   in   Chksum.dat   will     be  
  9144.                         PREFORMATTED   so   you  can   simply   IMPORT  
  9145.                         chksum.dat  into  the  cat  control file.
  9146.  
  9147.                         You  now  have one more  defense  against  NEW  
  9148.                         viruses. 
  9149.  
  9150.                                Synchronizing Access Levels
  9151.  
  9152.                    This  means CAT is taking your ACCESS.SYS file  and   
  9153.                    counting  the  number  of access  levels  you  have   
  9154.                    define and matching that number against the  number   
  9155.                    defined in the SYSINFO.QBS.
  9156.  
  9157.                    I've  never heard of this getting out of  sync,  so   
  9158.                    this  may  be  a waste of time,  but  an  ounce  of   
  9159.                    prevention . . .
  9160.  
  9161.                                     Command Line
  9162.  
  9163.               Cat  can accept any one of six command  line  arguments.   
  9164.               You may NOT intermix the arguments, i.e., only one at  a   
  9165.               time.
  9166.  
  9167.                                           Cat B
  9168.  
  9169.                    CAT  B   rebuilds the secondary file  indice.  It's   
  9170.                    used by FAM when you make changes to your FILES.QBS   
  9171.                    listings. 
  9172.  
  9173.                    You  can, if you need to, rebuild the  file  indice   
  9174.                    manually using this switch.
  9175.  
  9176.                                           Cat V
  9177.  
  9178.                    CAT  V  only  does  the VIRUS  Scan  and  the  File   
  9179.                    INTEGRITY check, provided you have defined them. 
  9180.  
  9181.                    It  MIGHT  not be a bad idea, if you  have  a  busy   
  9182.                    system  or you're running on a network, to  have  a   
  9183.                    couple of INTEGRITY events during the day that does   
  9184.                    a  system  wide  virus scan and  a  file  Integrity   
  9185.                    check.
  9186.  
  9187.                                           Cat S
  9188.  
  9189.                    CAT S triggers the FILE AREA file listing sort. You   
  9190.                    may  need to use this if you have just moved  files   
  9191.                    and don't want to wait.
  9192.  
  9193.  
  9194.  
  9195.  
  9196.          Osiris SE         Technical Reference Manual        Page 146
  9197.  
  9198.                                           Cat M
  9199.  
  9200.                    Triggers the Message Area Validation Check. May  be   
  9201.                    used  after you have defined NEW message  areas  to   
  9202.                    build the message databases for those areas.
  9203.  
  9204.                                           Cat P
  9205.  
  9206.                    Triggers the Message Area PACK, if an area requires   
  9207.                    it. This also triggers the Message Area  Validation   
  9208.                    CHeck prior to the PACK operation.
  9209.  
  9210.                                           Cat ?
  9211.  
  9212.                    Displays  a  HELP  screen  listing  the   available   
  9213.                    command line switches.
  9214.  
  9215.                                           Cat F
  9216.  
  9217.                    Flush  ALL the messages in the  CONFERENCE  message  
  9218.                    areas  and reset the callers last read to  0.  This  
  9219.                    can be used on days you want to BACK-UP the  system  
  9220.                    and  do  a  full  file  realignment  with  a   disk  
  9221.                    compression program.
  9222.  
  9223.                                      Mkpost.exe 
  9224.                                      <Filename>
  9225.  
  9226.               Mkpost   is  a text editor  designed  specifically   for   
  9227.               creating   text  files suited for  BBS  display.   E.g.,   
  9228.               messages, bulletins, uploading ASCII replies, etc.
  9229.  
  9230.               Mkpost   requires   one command  line   parameter,   the   
  9231.               name of the file to save the text in.
  9232.  
  9233.               E.g., Mkpost rules.txt
  9234.  
  9235.               Mkpost  uses  the same editor Sphinx,  TNT,  and   Iedit   
  9236.               uses so you should have no problems using it.
  9237.  
  9238.                                    User.exe 
  9239.  
  9240.                        Primary Control Boxes And Main Screen
  9241.  
  9242.               A  bank of 19 control boxes is positioned on  the  right   
  9243.               side  of  the  FIRST display.  These  are  your  primary   
  9244.               control  boxes to move amongst the user records  and  to   
  9245.               access the other sub-functions of user.
  9246.  
  9247.  
  9248.  
  9249.  
  9250.  
  9251.          Osiris SE         Technical Reference Manual        Page 147
  9252.  
  9253.               The control boxes are: Flags, Page2, Date, Find,  Page3,   
  9254.               Del, Left Arrow, Right Arrow, Page4, UnDel, Index, Exit,   
  9255.               First,  Last,  Sort,  Pack, Add, CDNUP,  and  Print.  To   
  9256.               select  one of the control box options, click  the  LEFT   
  9257.               mouse  button. The  control boxes may also  be  selected  
  9258.               using  a  HOTKEY.  To get a list of the  HOTKEYS,  press  
  9259.               ALT-H. 
  9260.                                        Flags
  9261.  
  9262.               Flag  opens a Window containing the flag settings;  Area   
  9263.               Flags, Command Key Flags, and Misc, for the current user   
  9264.               record.
  9265.  
  9266.               This  window functions the same as the  primary  window.   
  9267.               To  change a field, move your mouse cursor to  the  line   
  9268.               that  the field is on and click the RIGHT mouse  button.   
  9269.               You may also select the field to change using one of the   
  9270.               ten F-KEYS. To see which F-KEY is associated with  which   
  9271.               field, press ALT-H when the FLAG window is open. The ESC   
  9272.               key also duplicates CLICKing the OK box.
  9273.  
  9274.               To  exit  the Flag section back to the  primary  control   
  9275.               screen,  move  to the OK box and click  the  Left  Mouse   
  9276.               button or press ESC. 
  9277.                                         Date
  9278.  
  9279.               Kill  by Date allows you to specify the number  of  days   
  9280.               that  a user hasn't called. If any record matches  that,   
  9281.               the record will be flagged as deleted.
  9282.  
  9283.               This doesn't REMOVE the record, it only mark it so  that   
  9284.               it CAN be removed.
  9285.  
  9286.               Before I start, you will be shown an OK to Proceed  box.   
  9287.               Click  on YES with the Left Mouse button if you want  to   
  9288.               go  ahead. If not, move to the NO box and click  on  it.   
  9289.               Again with the Left Mouse button.  LEFT/RIGHT/TAB/RETURN   
  9290.               keys may also be used.
  9291.                                         Del
  9292.  
  9293.               Selecting  this option will cause the CURRENT record  to   
  9294.               be flagged as deleted. There is no confirmation box  and   
  9295.               the  record will instantly be marked. It isn't  REMOVED,   
  9296.               but only flagged for removal by the PACK option.
  9297.  
  9298.                                        Undel
  9299.  
  9300.               Selecting  this option will cause the CURRENT record  to   
  9301.               be UNDELETED. You'll be asked for the FIRST character of   
  9302.               the callers NAME. 
  9303.  
  9304.  
  9305.  
  9306.          Osiris SE         Technical Reference Manual        Page 148
  9307.  
  9308.                                         Find
  9309.  
  9310.               Allows  you to search the database based on any  one  of   
  9311.               three criteria; name, alias, or access level.
  9312.  
  9313.               You'll be shown (upper right hand corner of the  screen)   
  9314.               a  small  menu. Move to the search option you  want  and   
  9315.               click  with  the Left Mouse button. Clicking  the  RIGHT   
  9316.               mouse   button   cancels   the   operation.    ESC/ARROW  
  9317.               (UP/DN)/RETURN keys may also be used.
  9318.  
  9319.               Once  the search option has been selected,  you'll  be   
  9320.               asked for either a search string or an access level.
  9321.  
  9322.               I'll begin searching at the NEXT record and any  matches   
  9323.               will  be  shown with a YES, NO, or  CANCEL  confirmation   
  9324.               box.  The Left Mouse button indicates that you want  the   
  9325.               OUTLINED  option to be accepted. ARROW (left/Right)  and   
  9326.               RETURN keys may also be used.
  9327.  
  9328.               The search will continue till either the record is found   
  9329.               or all records have been searched.
  9330.  
  9331.               If  the item can't be found  you'll hear a short  sharp  
  9332.               beep and then you'll return to the main screen.
  9333.  
  9334.                                        Print
  9335.  
  9336.               Will  print  a  text file,  in  the  current  directory,   
  9337.               containing the names, access levels, phone numbers,  and   
  9338.               last date on-line for all the user records.
  9339.  
  9340.               The  text  file is suitable for printing  and  has  page   
  9341.               breaks using the ASCII 12 Form Feed character.
  9342.  
  9343.  
  9344.  
  9345.  
  9346.  
  9347.  
  9348.  
  9349.  
  9350.  
  9351.  
  9352.  
  9353.  
  9354.  
  9355.  
  9356.  
  9357.  
  9358.  
  9359.  
  9360.  
  9361.          Osiris SE         Technical Reference Manual        Page 149
  9362.  
  9363.                                         Pack
  9364.  
  9365.               This  function  removes ALL records marked  as  deleted,   
  9366.               rebuilds  the two primary index files and then  rebuilds   
  9367.               the  NEW  newmail indices by  calling  "INDEX.EXE."  The   
  9368.               process  can  be  time consuming if you have  a  LOT  of   
  9369.               messages on-line. 
  9370.                                        Index
  9371.  
  9372.               Rebuilds  all  the  indices  associated  with  the  user   
  9373.               records. Nearly the same as the PACK option, but doesn't   
  9374.               remove deleted records.
  9375.  
  9376.                                        Page4
  9377.  
  9378.               Opens  a secondary screen showing the TOTAL uploads  and   
  9379.               Downloads for the current record. 
  9380.  
  9381.               This functions just like the primary screen. RIGHT mouse   
  9382.               button to edit a field, Left mouse button in the OK  box   
  9383.               to return to primary display screen. You may also select   
  9384.               the field to change using one of the ten F-KEYS. To  see   
  9385.               which F-KEY is associated with which field, press  ALT-H   
  9386.               when  the  UP/DN  window  is  open.  The  ESC  key  also   
  9387.               duplicates CLICKing the OK box.
  9388.  
  9389.                                        Page2
  9390.  
  9391.               This a second control screen showing additional settings   
  9392.               for the CURRENT user record.
  9393.  
  9394.               Total  Calls, Nodelist Display, Screen Clear  Type,  IBM   
  9395.               Graphics,  ANSI  Graphics,  Command  Type,  Help  Level,   
  9396.               Conference Mail Check, and Message Posted.
  9397.  
  9398.               Some  fields can be TOGGLED to the reverse  settings  by   
  9399.               moving  to  that  field and  clicking  the  RIGHT  Mouse   
  9400.               Button.
  9401.  
  9402.               Fields that can be TOGGLED:
  9403.  
  9404.                                   Nodelist Display 
  9405.                                     IBM Graphics 
  9406.                                    ANSI Graphics 
  9407.                                     Command Type 
  9408.                                Conference Mail Check
  9409.  
  9410.               The  remaining fields can be edited by moving  to  their   
  9411.               screen  line and clicking the RIGHT mouse  button.  Some   
  9412.               will  require  TYPING in values while others may  use  a   
  9413.               pull down menu.
  9414.  
  9415.  
  9416.          Osiris SE         Technical Reference Manual        Page 150
  9417.  
  9418.               When you're done viewing or editing items on Screen Two,   
  9419.               move to the OK box and click the Left Mouse button.
  9420.  
  9421.               You can also select the field to change using one of the   
  9422.               ten F-KEYS. To see which F-KEY is associated with  which   
  9423.               field,  press ALT-H when the PAGE2 window is  open.  The   
  9424.               ESC key also duplicates CLICKing the OK box.
  9425.  
  9426.                                         Sort
  9427.  
  9428.               Allows  you  to sort the user records using any  one  of   
  9429.               three  sort  methods;  Access level,  Times  Called,  or   
  9430.               Access  Level and Times Called with Access  level  being   
  9431.               the  primary  key and Times Called being  the  secondary   
  9432.               Key.
  9433.  
  9434.               This sort is for YOUR benefit. Order makes no difference   
  9435.               as far as Osiris finding a record.
  9436.  
  9437.                                   Left/Right Arrow
  9438.  
  9439.               Moves you to the next or previous record.
  9440.  
  9441.                                     First / Last
  9442.  
  9443.               Moves you to the FIRST or LAST record.
  9444.  
  9445.                                         Add
  9446.  
  9447.               Adds  a  BLANK  user record to the  user.bbs  file.  You   
  9448.               should NEVER leave a record blank. If you add a  record,   
  9449.               immediately  go to the record and edit ALL fields or  as   
  9450.               MANY as possible. 
  9451.                                        Cdnup
  9452.  
  9453.               This  function  allows  you to  mass  clear  upload  and   
  9454.               download fields.
  9455.  
  9456.               When  you  select  this option, you'll  be  required  to   
  9457.               supply  3  additional  pieces of  information;  Type  of   
  9458.               clear,  which  records to clear, and access  levels  (if   
  9459.               required).
  9460.                                       Type Of Clear
  9461.  
  9462.                    This  tells me which fields to clear and  you  have   
  9463.                    three  options;  upload field, download  field,  or   
  9464.                    upload AND download fields.
  9465.  
  9466.                                  Which Records To Clear
  9467.  
  9468.                    Again,  you'll  have to tell me WHICH  records  you   
  9469.                    want to clear, based on access level.
  9470.  
  9471.          Osiris SE         Technical Reference Manual        Page 151
  9472.  
  9473.  
  9474.                    You  have  three  options;  All  Records,  only   a   
  9475.                    specific access level, or by RANGE.
  9476.  
  9477.                    The only one that needs further explanations is  by   
  9478.                    RANGE.   Range  requires a LOW access level  and  a   
  9479.                    HIGH  access level and records are cleared only  if   
  9480.                    the callers access level is equal to or between the   
  9481.                    low access level and the high access level. 
  9482.  
  9483.                                        Page3
  9484.  
  9485.               Screen  Three shows still more settings associated  with   
  9486.               the current record.
  9487.  
  9488.               Protocol,  Screen Length, Last File Board, Last  Message   
  9489.               Board, Original Log on Date, and Node Restricter.
  9490.  
  9491.               You  may edit any field, except for the protocol  field,   
  9492.               by  moving to the line the field is on and clicking  the   
  9493.               RIGHT mouse button.
  9494.  
  9495.               When you're done viewing/editing items on Screen  Three,   
  9496.               move to the OK box and click the Left Mouse Button.
  9497.  
  9498.               You can also select the field to change using one of the   
  9499.               ten F-KEYS. To see which F-KEY is associated with  which   
  9500.               field,  press ALT-H when the PAGE3 window is  open.  The   
  9501.               ESC key also duplicates CLICKing the OK box.
  9502.  
  9503.                            Dynamic Access Level Changing 
  9504.   
  9505.               You have 3 options. 
  9506.   
  9507.               Shift Up Range.  
  9508.               Shift Dn Range.  
  9509.               Change Specific. 
  9510.   
  9511.               The  Shift UP and Shift DN range allows you to   specify   
  9512.               an  access level RANGE (ie. 4 - 8) and how  many  access   
  9513.               levels to shift UP or DOWN. 
  9514.   
  9515.               You   can  specify a range of 1 - 15, shift  up,  and  a   
  9516.               shift   of  2.  That means anyone with an  access  level   
  9517.               between  and including  1 and 15 will have their  access   
  9518.               level boosted  by 2. 10 will become 12, 5 will become 7,   
  9519.               etc. 
  9520.   
  9521.               Same thing if you go with the shift dn. 
  9522.  
  9523.  
  9524.  
  9525.  
  9526.          Osiris SE         Technical Reference Manual        Page 152
  9527.  
  9528.               Change asks you for the old access level and then a  new   
  9529.               access level and just changes anyone with the old  level   
  9530.               to the new level.
  9531.  
  9532.          The  Main Display Screen shows 10 primary fields  within  the   
  9533.          user  record.  These  are the fields that are  likely  to  be   
  9534.          changed the most.
  9535.  
  9536.          To  Edit a field, move to the line the field is on and  click   
  9537.          the RIGHT mouse button.
  9538.  
  9539.          In  the  lower right hand corner of the screen you'll  see  a   
  9540.          field containing the CURRENT record number, 0 - 65535.
  9541.  
  9542.          You  may select the field to change using one of the  ten  F-  
  9543.          KEYS.  To  see which F-KEY is associated  with  which  field,   
  9544.          press ALT-H.
  9545.  
  9546.          When  editing  a  field, your mouse buttons may  be  used  to   
  9547.          simulate pressing RETURN, ESC, and CTRL-RETURN.
  9548.  
  9549.          Left Mouse Button - Simulates RETURN.
  9550.  
  9551.          Right Mouse Button - Simulates CTRL-RETURN.
  9552.  
  9553.          Middle Mouse Button - Simulates ESC (clears field)
  9554.  
  9555.                                   Access.sys
  9556.  
  9557.          Access.sys resides in the Osiris root directory and  contains   
  9558.          information about each access level you've defined. 
  9559.  
  9560.          You define such things as ; time limits per call, time limits   
  9561.          per day, download limits per day, etc. 
  9562.           
  9563.          Some items, such as time limits and download limits,  require   
  9564.          four settings, one for each of the primary baud rates.
  9565.  
  9566.          This  gives  you  more control, based on just  how  fast  the   
  9567.          caller  is,  than  the traditional single  access  level  for   
  9568.          everyone.
  9569.  
  9570.          Osetup  set up 1 access level for you. You can edit that  and   
  9571.          add up to 65534 more access levels. That's in theory. 
  9572.  
  9573.  
  9574.  
  9575.  
  9576.  
  9577.  
  9578.  
  9579.  
  9580.  
  9581.          Osiris SE         Technical Reference Manual        Page 153
  9582.  
  9583.          I  don't really expect anyone could possible need  that  many   
  9584.          , given the ability to subdivide each level by 65535.
  9585.  
  9586.          You can view/edit/add/delete from OSM (Access subsystem).
  9587.  
  9588.                                Time  Limit  Per  Call
  9589.  
  9590.               One  for  EACH of the primary baud rates  ;  300,  1200,   
  9591.               2400, and 9600. 9600 covers the remaining baud rates. 
  9592.   
  9593.               If  a  Time Limit Per Call field is set to ZERO,  you'll    
  9594.               be given 1440 minutes PER call (basically disabling  the   
  9595.               setting). Events will still be ENFORCED. 
  9596.   
  9597.                                  Time Limit Per Day
  9598.  
  9599.               One  for  EACH of the primary baud rates  ;  300,  1200,   
  9600.               2400, and 9600. 9600 covers the remaining baud rates.
  9601.  
  9602.               If a Time Limit Per Day field is set to ZERO, you'll  be    
  9603.               given   1440   minutes PER  Day   (basically   disabling    
  9604.               the setting). 
  9605.   
  9606.                                   Download Limits
  9607.  
  9608.               One  for 300, 1200, 2400, and 9600pbs. Setting this   to    
  9609.               ZERO  will    disable   it   and   gives  you  unlimited     
  9610.               daily downloads. 
  9611.   
  9612.                                  File Ratio Limits
  9613.  
  9614.               One  for 300, 1200, 2400, and 9600pbs. Setting this   to    
  9615.               ZERO will disable it
  9616.  
  9617.  
  9618.               This  is  an X to 1 ratio. Meaning for every  X  number,   
  9619.               allow  1.  If set to 3, the caller would be  allowed  to   
  9620.               download 3 files for every one uploaded. 
  9621.   
  9622.                                      Byte Ratio
  9623.  
  9624.               This  allows  you  to define a  KILO-BYTE,  1024  bytes,    
  9625.               ratio. 
  9626.  
  9627.               This is an X to 1 ratio. Meaning for every X Kilo-Bytes,   
  9628.               allow  1  Kilo-Byte.  If set to 3, the caller  would  be   
  9629.               allowed to download 3 kilo-bytes for every one uploaded.                       
  9630.               
  9631.  
  9632.  
  9633.  
  9634.  
  9635.  
  9636.          Osiris SE         Technical Reference Manual        Page 154
  9637.  
  9638.                                    Time Give Back
  9639.  
  9640.               This is the amount of TIME given back  for the amount of   
  9641.               time  you  spent  uploading. This is a  X   to  1  RATIO   
  9642.               meaning  give back X minutes for every 1  minute   spent   
  9643.               uploading. 
  9644.   
  9645.               3   means  give  back  3 minutes  for  every  1   minute    
  9646.               spent uploading. 
  9647.   
  9648.               1   means  give  back  1  minute  for  every  1   minute    
  9649.               spent uploading. 
  9650.   
  9651.               0 means don't give ANYTHING. 
  9652.   
  9653.                                    Byte Give Back
  9654.  
  9655.               This  is  the amount of BYTES to give   back  for  bytes   
  9656.               uploaded. 
  9657.   
  9658.               This  is a X to 1 KBYTE RATIO meaning give back X Kbytes    
  9659.               for  every  1K byte uploaded. 2 would mean give 2K   for   
  9660.               every 1K uploaded.  
  9661.   
  9662.               0 means don't give ANYTHING. 
  9663.   
  9664.                               Password Protect Uploads 
  9665.                                        Y or N
  9666.  
  9667.               This decides *IF*  I  will ASK you if you would like  to   
  9668.               PASSWORD  protect the  file you're about to  upload.   
  9669.   
  9670.   
  9671.                                 Allow Password/Kill 
  9672.                                        Y or N
  9673.  
  9674.               This  determines  whether or not you're able to  flag  a   
  9675.               password protected file for auto-deletion.
  9676.  
  9677.                                Attach File To Message 
  9678.                                        Y or N
  9679.  
  9680.               This  is  used by the Message Center  to   determine  IF    
  9681.               you're allowed to ATTACH a file to  a message. 
  9682.  
  9683.                                      Twitting A User
  9684.  
  9685.                    If  you  set a caller's access level to  zero,  I'll   
  9686.                    assume that person is a TWIT and you don't want him   
  9687.                    on-line.  I'll display the file  "TWIT.ASC/MMU/ANS"   
  9688.                    and then hang up on him.
  9689.  
  9690.  
  9691.          Osiris SE         Technical Reference Manual        Page 155
  9692.           
  9693.                                  Display Files
  9694.  
  9695.          Unless  otherwise  stated,  all the  files  that  follow  may   
  9696.          include  ANSI  (if .ANS extension).
  9697.  
  9698.          All the files, unless other wise stated, should be placed  in   
  9699.          the TEXT support sub-directory.
  9700.  
  9701.                                     Logo.asc/Mmu/Ans
  9702.  
  9703.               Shown  before  Osiris ASKS  the  caller  for his or  her   
  9704.               first  name, per-log on. Contents and make-up is  up  to   
  9705.               you.
  9706.  
  9707.                                    Nodexx.asc/Mmu/Ans
  9708.  
  9709.               Shown  to a caller who has been ASSIGNED to  a  specific   
  9710.               NODE  and  has CALLED a node which IS NOT the  one  he's   
  9711.               assigned  to.  The 'xx' is the NODE NUMBER he  has  been   
  9712.               assigned to. Contents and make-up is up to you.
  9713.  
  9714.                                    Tlimit.asc/Mmu/Ans
  9715.  
  9716.               Shown  to  a caller who  has exceeded  his   DAILY  time   
  9717.               limit before Osiris hangs up. Contents and make-up is up   
  9718.               to you.
  9719.  
  9720.                                       Xxxx.msg
  9721.  
  9722.               This is a PERSONAL message addressed specifically TO the   
  9723.               caller  with User record number is XXXX. ie. 234.MSG  is   
  9724.               for  the  caller who's  user record number is  234.  The   
  9725.               XXXX.MSG MUST be placed in the Osiris sub-directory.
  9726.  
  9727.  
  9728.               The  file  is in TEXT format, created  with  any   ASCII   
  9729.               editor, and will be shown to the caller it is  addressed   
  9730.               TO. Once displayed, Osiris will delete it.
  9731.  
  9732.               Warning,  RENUMBERING  the user  records  (packing)  may   
  9733.               cause  the record number to change and the WRONG  person   
  9734.               will get the message. 
  9735.  
  9736.               NOTE: You should NOT use ANSI in this file nor do  SPL/I   
  9737.               commands work. 
  9738.                                    Accxxxx.bbs
  9739.  
  9740.               This  is a Text message, created with any ASCII  editor,   
  9741.               placed  in  the Osiris directory that'll  be  shown  to   
  9742.               anyone with the access level equal to xxxx. 
  9743.  
  9744.  
  9745.  
  9746.          Osiris SE         Technical Reference Manual        Page 156
  9747.  
  9748.               e.g.  ACC10.BBS  will be shown to  those  having  access   
  9749.               level 10.
  9750.  
  9751.               I'll  NOT  delete this file and it will continue  to  be   
  9752.               shown until YOU delete it.
  9753.  
  9754.  
  9755.               NOTE: You should NOT use ANSI in this file. 
  9756.  
  9757.                                    Rookie.asc/Mmu/Ans
  9758.  
  9759.               This is shown during the log on process, before the  new   
  9760.               files check. ROOKIE.ASC/MMU/ANS is shown *IF* the caller   
  9761.               has  called your system LESS than 4 times. Contents  and   
  9762.               make-up is left up to you. 
  9763.                
  9764.                                   Welcome.asc/Mmu/Ans
  9765.                
  9766.               This is the first file shown during the log on  process,   
  9767.               providing  the  caller  has  called  4  or  more  times.   
  9768.               Contents and make-up is left up to you.
  9769.  
  9770.                                   Welcome2.asc/Mmu/Ans
  9771.  
  9772.               This file is shown following the welcome.ASC/MMU/ANS  or   
  9773.               rookie.ASC/MMU/ANS.  Contents and make-up is left up  to   
  9774.               you.
  9775.  
  9776.                                   Welcome3.asc/Mmu/Ans
  9777.  
  9778.               This  file is shown following the  welcome2.ASC/MMU/ANS.   
  9779.               The contents and make is left up to you.
  9780.  
  9781.                                   Welcome4.asc/Mmu/Ans
  9782.  
  9783.               This  file is shown following the  welcome3.ASC/MMU/ANS.   
  9784.               The contents and make is left up to you.
  9785.  
  9786.                                   Welcome5.asc/Mmu/Ans
  9787.  
  9788.               This  file is shown following the  welcome4.ASC/MMU/ANS.   
  9789.               The contents and make is left up to you.
  9790.  
  9791.                                     Main.asc/Mmu/Ans
  9792.  
  9793.               This  is  the menu displayed at the MAIN MENU  when  you   
  9794.               have FULL help turned on.
  9795.  
  9796.                                   Mainhelp.asc/Mmu/Ans
  9797.  
  9798.               This is the HELP system file for the MAIN menu. This  is   
  9799.               shown when you press ? from the main menu. 
  9800.                
  9801.          Osiris SE         Technical Reference Manual        Page 157
  9802.  
  9803.                                    Byebye.asc/Mmu/Ans
  9804.  
  9805.               This  is  displayed when you log OFF  the  system.  It's   
  9806.               displayed following the "enter message to sysop prompt."
  9807.  
  9808.                                   Byebye2.asc/Mmu/Ans
  9809.               
  9810.               This  is  displayed  during the log  off  process  right   
  9811.               before you're asked to hang up.
  9812.  
  9813.                                     Dos.asc/Mmu/Ans
  9814.  
  9815.               This is shown to the caller when you SHELL to DOS (F3).
  9816.  
  9817.                                     Back.asc/Mmu/Ans
  9818.  
  9819.               This is shown to the caller when you return from a  DOS   
  9820.               shell (F3).
  9821.  
  9822.                                   Last_on.asc/Mmu/Ans
  9823.  
  9824.               This  is  shown to a caller when you  have  engaged  the   
  9825.               LASTON control file to prevent a back-to-back log-on.
  9826.  
  9827.  
  9828.                                    Main1.prg
  9829.  
  9830.               This  is  the file shown when you select the  MAIN  menu   
  9831.               MAIN1  option.  The contents and make up is left  up  to   
  9832.               you. Its  primary purpose is to allow you to PROGRAM  in   
  9833.               your own functions  using SPL/I.
  9834.  
  9835.                                    Main2.prg
  9836.  
  9837.               This  is  the file shown when you select the  MAIN  menu   
  9838.               MAIN2  option.  The contents and make up is left  up  to   
  9839.               you. Its  primary purpose is to allow you to PROGRAM  in   
  9840.               your own functions  using SPL/I.
  9841.  
  9842.                                    Main3.prg
  9843.  
  9844.               This  is  the file shown when you select the  MAIN  menu   
  9845.               MAIN3  option.  The contents and make up is left  up  to   
  9846.               you. Its  primary purpose is to allow you to PROGRAM  in   
  9847.               your own functions  using SPL/I.
  9848.  
  9849.                                    Main4.prg
  9850.  
  9851.               This  is  the file shown when you select the  MAIN  menu   
  9852.               MAIN4  option.  The contents and make up is left  up  to   
  9853.               you.  Its primary purpose is to allow you to PROGRAM  in   
  9854.               your own functions  using SPL/I.
  9855.  
  9856.          Osiris SE         Technical Reference Manual        Page 158
  9857.  
  9858.                                    Main5.prg
  9859.  
  9860.               This  is  the file shown when you select the  MAIN  menu   
  9861.               MAIN5  option.  The contents and make up is left  up  to   
  9862.               you.  Its primary purpose is to allow you to PROGRAM  in   
  9863.               your own functions  using SPL/I.
  9864.  
  9865.                                    Main6.prg
  9866.  
  9867.               This  is  the file shown when you select the  MAIN  menu   
  9868.               MAIN6  option.  The contents and make up is left  up  to   
  9869.               you.  Its primary purpose is to allow you to PROGRAM  in   
  9870.               your own functions  using SPL/I.
  9871.  
  9872.                                    Main7.prg
  9873.  
  9874.               This  is  the file shown when you select the  MAIN  menu   
  9875.               MAIN7  option.  The contents and make up is left  up  to   
  9876.               you.  Its primary purpose is to allow you to PROGRAM  in   
  9877.               your own functions  using SPL/I.
  9878.  
  9879.                                    Main8.prg
  9880.  
  9881.               This  is  the file shown when you select the  MAIN  menu   
  9882.               MAIN8  option.  The contents and make up is left  up  to   
  9883.               you.  Its primary purpose is to allow you to PROGRAM  in   
  9884.               your own functions  using SPL/I.
  9885.  
  9886.                                    Main9.prg
  9887.  
  9888.               This  is  the file shown when you select the  MAIN  menu   
  9889.               MAIN9  option.  The contents and make up is left  up  to   
  9890.               you.  Its primary purpose is to allow you to PROGRAM  in   
  9891.               your own functions  using SPL/I.
  9892.  
  9893.                                    Main10.prg
  9894.  
  9895.               This  is  the file shown when you select the  MAIN  menu   
  9896.               MAIN10  option. The contents and make up is left  up  to   
  9897.               you.  Its primary purpose is to allow you to PROGRAM  in   
  9898.               your own functions  using SPL/I.
  9899.  
  9900.                                   Msghelp.asc/Mmu/Ans
  9901.  
  9902.               This  is the HELP menu for the primary  Conference  area   
  9903.               menu.  This is shown when you enter ?. The contents  and   
  9904.               make up of this file is left to you.
  9905.  
  9906.                                    Gate_m.asc/Mmu/Ans
  9907.  
  9908.               This  is shown when you select the GATE option from  the   
  9909.               primary  conference area message menu. 
  9910.  
  9911.          Osiris SE         Technical Reference Manual        Page 159
  9912.  
  9913.                                    Editor.asc/Mmu/Ans
  9914.  
  9915.               This is the LINE editor menu. A default one is  included   
  9916.               but you are free to make your own.
  9917.  
  9918.                                   Peditor.asc/Mmu/Ans
  9919.  
  9920.               This is ALSO the line editor menu, but this one is shown   
  9921.               ,in  place of EDITOR.ASC/MMU/ANS, IF you're  allowed  to   
  9922.               ATTACH  files  to  messages. Make  sure  you  have  BOTH   
  9923.               Peditor and editor.PRG/ans in the text directory.
  9924.  
  9925.                                    Edhelp.asc/Mmu/Ans
  9926.  
  9927.               This  is the HELP system file for the line editor.  It's   
  9928.               shown when you enter '?' from the Line editor menu.
  9929.  
  9930.               The contents and make-up of this file is left up to you.
  9931.  
  9932.                                    Mchelp.asc/Mmu/Ans
  9933.  
  9934.               This is the HELP system file for the READ menu,  located   
  9935.               in  the  message Conference system. This file  is  shown   
  9936.               when you press 'H' for help.
  9937.  
  9938.                                   Maskhelp.asc/Mmu/Ans
  9939.  
  9940.               This is the HELP system file for the MASK sub-menu which   
  9941.               is  located  in the READ sub-system (message  conference   
  9942.               section).
  9943.  
  9944.               It is shown when you press 'H' for help.
  9945.  
  9946.                                   Setboard.asc/Mmu/Ans
  9947.  
  9948.               This  is  the  menu for the  conference  selection  sub-  
  9949.               system, located in the conference message system.
  9950.  
  9951.                                   Confhelp.asc/Mmu/Ans
  9952.  
  9953.               This  is  the  HELP  system  file  for  the   conference   
  9954.               selection sub-system. It is shown when you enter '?'.
  9955.  
  9956.                                   Filehelp.asc/Mmu/Ans
  9957.  
  9958.               This is the HELP system file for the main file area menu   
  9959.               options. This file is shown when you enter '?'.
  9960.  
  9961.               The contents and make up of this file is left up to you.
  9962.  
  9963.  
  9964.  
  9965.  
  9966.          Osiris SE         Technical Reference Manual        Page 160
  9967.  
  9968.                                    Gate_f.asc/Mmu/Ans
  9969.  
  9970.               This file is shown when you select the GATE option  from   
  9971.               the  file area. 
  9972.  
  9973.                                    File1.asc/Mmu/Ans
  9974.  
  9975.               This  file  severs  the  same  function  as   the   
  9976.               GATE_F.ASC/MMU/ANS  file.  But,  it is considered  as  a   
  9977.               PLACE  holder  for  future  expansion  and  MAY  not  be   
  9978.               available for programming in the future.
  9979.  
  9980.                                    Search.asc/Mmu/Ans
  9981.  
  9982.               This is shown when you have FULL help turned on and have  
  9983.               selected the SEARCH option in one of the file areas.  It   
  9984.               should  explain  a little about the search  feature.   
  9985.  
  9986.                                    Ratio.asc/Mmu/Ans
  9987.  
  9988.               This file is shown when you attempt to DOWNLOAD but your   
  9989.               FILE RATIO is out of whack.
  9990.  
  9991.               You should explain HOW to correct the problem.
  9992.  
  9993.                                     Byte.asc/Mmu/Ans
  9994.  
  9995.               This file is shown when you attempt to download but your   
  9996.               Kilobyte ratio is out of whack. 
  9997.  
  9998.               You should explain HOW to correct the problem.
  9999.  
  10000.  
  10001.                                    Mhelp.asc/Mmu/Ans
  10002.  
  10003.               This is the SYSTEM help file for the Message Center.  It   
  10004.               is  displayed  when you press 'H'.
  10005.  
  10006.                                   Cselect.asc/Mmu/Ans
  10007.  
  10008.               This  is  shown RIGHT after a NEW  caller  has  finished   
  10009.               filling  out his user record. You may want to use it  to   
  10010.               display some ground rules or explain about your system. 
  10011.  
  10012.                                    Slhelp.asc/Mmu/Ans
  10013.  
  10014.               Shown  to a NEW caller just before he's asked about  the   
  10015.               screen  length  setting. Should explain  what  a  screen   
  10016.               length setting is.
  10017.  
  10018.  
  10019.  
  10020.  
  10021.          Osiris SE         Technical Reference Manual        Page 161
  10022.  
  10023.  
  10024.                                   Showibm.asc/Mmu/Ans
  10025.  
  10026.               Shown  to a NEW caller just before he's asked about  IBM   
  10027.               graphics. Should be used to illustrate IBM graphics.
  10028.  
  10029.                                   Showansi.asc/Mmu/Ans
  10030.  
  10031.               Shown to a NEW caller just before he's asked about  ANSI   
  10032.               graphics. Should be used to illustrate ANSI graphics.
  10033.  
  10034.                                   No_ansi.asc/Mmu/Ans
  10035.  
  10036.               Shown  to  a NEW caller when they are at  or  below  the   
  10037.               required   baud  rate  for  ANSI.
  10038.  
  10039.                                    Mcmenu.asc/Mmu/Ans
  10040.  
  10041.               This  menu is shown when you enter the  Message Center.
  10042.  
  10043.                                  Read.asc/Mmu/Ans
  10044.  
  10045.               This  menu is shown when you enter the  READ  sub-system   
  10046.               from one of the conference areas.
  10047.  
  10048.                                    Chelp.asc/Mmu/Ans
  10049.  
  10050.               This is the HELP system file for the CHANGE menu.  Is   
  10051.               displayed when you press '?'.
  10052.  
  10053.                                    Phone.asc/Mmu/Ans
  10054.  
  10055.               This  is displayed to NEW callers right  before  they're   
  10056.               asks for their phone number. It should be used to convey   
  10057.               some  type of formatting instructions. The default  one,   
  10058.               included with the setup package, uses SPL/I to customize   
  10059.               and force format (on screen).
  10060.  
  10061.                                   Onewhelp.asc/Mmu/Ans
  10062.  
  10063.               This is shown to NEW callers right before they're asked  
  10064.               about OSAGE. It should be used to explain what OSAGE is   
  10065.               and what's required to use it.
  10066.  
  10067.                                    Uphelp.asc/Mmu/Ans
  10068.  
  10069.               This  is  shown  to NEW  callers  right  before  they're   
  10070.               asked  if  they want to be ASKED about  the  new  upload   
  10071.               search. It should explain about the new upload search and   
  10072.               the benefits of using it.
  10073.  
  10074.  
  10075.  
  10076.          Osiris SE         Technical Reference Manual        Page 162
  10077.  
  10078.                                    Dnhelp.asc/Mmu/Ans
  10079.  
  10080.               Shown   to  NEW  callers  prior  to  asking  about   the   
  10081.               Download/Tag prompt during a new upload search.
  10082.  
  10083.                                   H_chelp.asc/Mmu/Ans
  10084.  
  10085.               This is shown to NEW callers right before they're  asked   
  10086.               about HOTKEYS or COMMAND STACKING. It should be used  to   
  10087.               explain a little bit about each option.
  10088.  
  10089.                                   Cslhelp.asc/Mmu/Ans
  10090.  
  10091.               This is shown to NEW callers right before they're  asked   
  10092.               to  select the type of screen clear. You should  explain   
  10093.               the difference between ANSI, FF(Form Feed) and CR/LF. 
  10094.  
  10095.                                    Email.asc/Mmu/Ans
  10096.  
  10097.               This  is  the HELP system file for  the  Internode  chat   
  10098.               system.  
  10099.                                     Twit.asc/Mmu/Ans
  10100.  
  10101.               THis is shown to a caller who has had his or her  access   
  10102.               level reduced to ZERO. The name says it all.
  10103.  
  10104.                                    Birth.asc/Mmu/Ans
  10105.  
  10106.               Shown  to  a caller when the current DATE is  his  birth   
  10107.               day. 
  10108.                                   Sys_stat.asc/Mmu/Ans
  10109.  
  10110.               Shown to a caller during the log on process and from the   
  10111.               main  menu  (personal  status option).  Should  be  used   
  10112.               (programmed with SPL/I) to display some of the  caller's   
  10113.               personal stats  as well as some of the system stats.
  10114.  
  10115.                                   Private.asc/Mmu/Ans
  10116.  
  10117.               Shown  to  anyone attempting to LOG on to a  NEW  system   
  10118.               when  that  system has been flagged as PRIVATE,  no  NEW   
  10119.               callers.  Should  be  used to explain  that  you  run  a   
  10120.               private system. 
  10121.                                     New1.asc/Mmu/Ans
  10122.  
  10123.               This  is  the FIRST file shown to a  NEW  caller,  right   
  10124.               before  the  user record information is asked  for.  You   
  10125.               should AVOID using ANY SPL/I commands in this file.
  10126.  
  10127.                                     New2.asc/Mmu/Ans
  10128.  
  10129.               Shown to NEW callers right after the Cselect.ASC/MMU/ANS   
  10130.               file. Most often used for new caller questionnaires. 
  10131.          Osiris SE         Technical Reference Manual        Page 163
  10132.  
  10133.                                 Fdisplay.asc/Mmu/Ans
  10134.  
  10135.               Alternate  file  area display. Most often used when  you   
  10136.               have lots of areas, small area names, and want to create   
  10137.               a three or four column display.
  10138.  
  10139.                                 Statmenu.asc/Mmu/Ans
  10140.  
  10141.               The primary statistics system main menu.
  10142.  
  10143.                                   Promenu.asc/Mmu/Ans
  10144.  
  10145.               This  is  the ON-LINE STORE FULL help main menu.
  10146.  
  10147.                                   Prohelp.asc/Mmu/Ans
  10148.  
  10149.               This  is  the HELP system file for  the  On-line  Store.   
  10150.               This  is  displayed  when you enter '?' from  the   main   
  10151.               store  menu.
  10152.  
  10153.                                    Sintro.asc/Mmu/Ans
  10154.  
  10155.               This  file  is shown when you enter  the  ON-LINE  store   
  10156.               sub-  system   for the first time. It can be used  as  a   
  10157.               blanket  advertising screen. 
  10158.  
  10159.                                  Slist.asc/Mmu/Ans 
  10160.  
  10161.               Used  to  display the different STORES you  have  setup.   
  10162.               This should also display the store NUMBER for each store   
  10163.               listed. The store number corresponds with its   position   
  10164.               in the control file.
  10165.  
  10166.                                   Infxxxx.asc/Mmu/Ans
  10167.  
  10168.               This   file  is  shown  when  the  caller  selects   the   
  10169.               information  option  from  the  store  menu.  It  should   
  10170.               contain information about the current store. The  'xxxx'   
  10171.               will be replaced with the store NUMBER.
  10172.  
  10173.                                   Bulxxxx.asc/Mmu/Ans
  10174.  
  10175.               This  file is shown when you select the BULLETIN  option   
  10176.               from  the  store menu. It may contain anything  and  the   
  10177.               'xxxx' will be replaced by the store NUMBER. 
  10178.  
  10179.  
  10180.  
  10181.  
  10182.  
  10183.  
  10184.  
  10185.  
  10186.          Osiris SE         Technical Reference Manual        Page 164
  10187.  
  10188.                                      Files 
  10189.          Files  used  by  or  created by  Osiris  are  categorized  by   
  10190.          families. The families and types are as follows:
  10191.  
  10192.          File Type                 Extension               Use 
  10193.          ______________________________________________________________
  10194.  
  10195.            Special   Compiled                        Dual   Purpose   
  10196.            display file.                             display file   
  10197.                                                      that lets the 
  10198.                                                                                             filtering.     
  10199.          ______________________________________________________________
  10200.  
  10201.            ASCII Display 
  10202.            Files.                     .ASC           NON-ANSI Display 
  10203.                                                      file.          
  10204.          ______________________________________________________________ 
  10205.                                  
  10206.          ANSI Display Files           .ANS           Used for ANSI  
  10207.                                                      Displays.
  10208.  
  10209.          ______________________________________________________________
  10210.  
  10211.          Osiris Configuration 
  10212.          or Control Files.            .QBS 
  10213.                                                                                                                                                                                                                                                                                                                                       configuration or  
  10214.                                                      Osiris system  
  10215.                                                      related data. 
  10216.          ______________________________________________________________
  10217.  
  10218.          Index                        .IDX           Allows fast access 
  10219.                                                      to system configuration 
  10220.                                                      files. Those with .QBS 
  10221.                                                      , BBS, DAT, and SYS 
  10222.                                                      extensions. 
  10223.          ______________________________________________________________ 
  10224.                                
  10225.          Memo Files                   .DAT            Storage for MEMO 
  10226.                                                       fields. 
  10227.          ______________________________________________________________
  10228.  
  10229.          Index                        .IDX            Allows fast access 
  10230.                                                       to MEMO fields.
  10231.  
  10232.  
  10233.          Osiris SE         Technical Reference Manual        Page 165
  10234.  
  10235.          SPL/I Command  Files         .PRG             Programmable SPL/I                       
  10236.                                                        command file.  
  10237.          ______________________________________________________________
  10238.  
  10239.                           Individual File Break Down
  10240.  
  10241.                                         Callx.dat 
  10242.                                Replace x With Node Number
  10243.  
  10244.                    Used to store information about the last caller  to   
  10245.                    Node x. 
  10246.  
  10247.                                        Comport.dat
  10248.  
  10249.                    Used  to  store individual  serial  port  settings,   
  10250.                    interrupt numbers, offsets, etc.
  10251.  
  10252.                                        Xxxmsg.yyy
  10253.  
  10254.                    Used  to  store internode email  messages.  Replace   
  10255.                    xxxx with node number. yyy is a random 3 digit  HEX   
  10256.                    number  from  1 to 4096.  No  two  internode  email   
  10257.                    messages will have the same yyy file extension. 
  10258.                
  10259.                                        S_node.dat
  10260.  
  10261.                    Holds that NODE status for each node.
  10262.  
  10263.                                         Userx.qbs 
  10264.                                Replace x With Node Number
  10265.  
  10266.                    The  current  callers user record,  written  during   
  10267.                    external shells.
  10268.  
  10269.                    Modifications  made to this record, during  shells,   
  10270.                    will be adopted by Osiris when you return from   
  10271.                    the shell. 
  10272.                                       Msgboard.qbs 
  10273.                
  10274.                    Contains the individual Conference area settings.
  10275.  
  10276.                                        Hdrxxx.sys
  10277.  
  10278.                    Contains the message HEADERS; to, from, subj,  etc.   
  10279.                    for  individual CONFERENCE messages.  Replace  xxxx   
  10280.                    with the conference area number.
  10281.  
  10282.                                        Txtxxx.sys
  10283.  
  10284.                    Contains the actual TEXT for individual  CONFERENCE   
  10285.                    messages.  Replace  xxxx with the  conference  area   
  10286.                    number.
  10287.  
  10288.          Osiris SE         Technical Reference Manual        Page 166
  10289.  
  10290.                                          Hdp.sys
  10291.  
  10292.                    Contains the message HEADERS; to, from, subj,  etc.   
  10293.                    for private Message Center messages. 
  10294.  
  10295.                                         Txtp.sys
  10296.  
  10297.                    Contains  the  actual TEXT for  individual  Message   
  10298.                    Center messages. 
  10299.  
  10300.                                         Msgx.doc 
  10301.                                Replace x With Node Number
  10302.  
  10303.                    A temporary holding file for message text. File  is   
  10304.                    created and deleted by Osiris when needed. 
  10305.               
  10306.                                        Newmail.sys
  10307.  
  10308.                    A  new, personal, conference mail index file.  Used   
  10309.                    for fast new personal mail checks.
  10310.  
  10311.                                         Pmail.idx
  10312.  
  10313.                    A  new, personal, PRIVATE Message Center  new  mail   
  10314.                    index file. 
  10315.  
  10316.                                          Hdh.sys
  10317.  
  10318.                    A  temporary holding file for message HEADERS;  to,   
  10319.                    from, subj, etc. for all areas marked as REV.
  10320.  
  10321.                                         Txtp.sys
  10322.  
  10323.                    A  temporary holding file for message TEXT for  all   
  10324.                    areas marked as REV.
  10325.  
  10326.                                         User.bbs
  10327.  
  10328.                    Used to store individual user records.
  10329.  
  10330.                                         User.idx
  10331.  
  10332.                    Index  for  fast access to user.bbs,  key  is  user   
  10333.                    name.
  10334.  
  10335.                                         Alias.idx
  10336.  
  10337.                    Index  for  fast access to user.bbs, key  is  ALIAS   
  10338.                    name.
  10339.  
  10340.  
  10341.  
  10342.  
  10343.          Osiris SE         Technical Reference Manual        Page 167
  10344.  
  10345.                                       Filboard.qbs
  10346.  
  10347.                    Used  to  store settings for each  individual  file   
  10348.                    area.
  10349.  
  10350.                                         Files.dat
  10351.  
  10352.                    A  secondary data file used for fast access to  the   
  10353.                    files available for downloading. This index is used   
  10354.                    by the new uploads search, string search, and other   
  10355.                    operations where speed is  paramount.
  10356.  
  10357.                                         Files.idx
  10358.  
  10359.                    Index used, under some conditions, for fast  access   
  10360.                    to FILES.DAT. 
  10361.                                        Dl_area.idx
  10362.  
  10363.                    Index used, under some conditions, for fast  access   
  10364.                    to FILES.DAT. 
  10365.                                          Upx.bbs 
  10366.                                Replace x with Node Number
  10367.  
  10368.                    Used  to  store the names and sizes  of  the  files   
  10369.                    uploaded during the CURRENT day.
  10370.  
  10371.                    File  is  used  by  CAT when  it  posts  the  daily   
  10372.                    statistics message to the sysop.
  10373.  
  10374.                                          Dnx.bbs 
  10375.                                Replace x with Node Number
  10376.  
  10377.                    Used  to  store the names and sizes  of  the  files   
  10378.                    dnloaded during the CURRENT day.
  10379.  
  10380.                    File  is  used  by  CAT when  it  posts  the  daily   
  10381.                    statistics message to the sysop.
  10382.  
  10383.                                          Ncx.bbs 
  10384.                                Replace x With Node Number
  10385.  
  10386.                    Used  to store the names of NEW callers during  the   
  10387.                    CURRENT day.
  10388.  
  10389.                    File  is  used  by  CAT when  it  posts  the  daily   
  10390.                    statistics message to the sysop.
  10391.  
  10392.                                       Badfiles.bbs
  10393.  
  10394.                    Used  to store the names of ILLEGAL file names  you   
  10395.                    do not want used on your system.
  10396.  
  10397.  
  10398.          Osiris SE         Technical Reference Manual        Page 168
  10399.  
  10400.                                         Sendx.ctl 
  10401.                                Replace x With Node Number
  10402.  
  10403.                    Temporary  file created by Osiris to hold the  full   
  10404.                    drive, path, and names of the files the protocol is   
  10405.                    suppose to send to the caller.
  10406.  
  10407.                    If  you tell me to, I will pass this file  name  to   
  10408.                    the protocol driver.
  10409.  
  10410.                    The  File format is a single filename per line,  no   
  10411.                    limit on the number of lines.
  10412.  
  10413.                                         Tranx.log 
  10414.                                Replace x With Node Number
  10415.  
  10416.                    A  temporary  file created by the  protocol  driver   
  10417.                    listing  the  name(s)  of the  files  sent  to  the   
  10418.                    caller.
  10419.  
  10420.                    I'll  use  this  file,  providing  it  exists,   to   
  10421.                    determine  which  files to charge  the  caller  for   
  10422.                    downloading.
  10423.  
  10424.                    If this file does not exist, I will have to rely on   
  10425.                    the protocols exit errorlevel.
  10426.  
  10427.                    File  Format  is a single file name  per  line,  no   
  10428.                    limit on the number of lines.
  10429.  
  10430.                    E.g.,
  10431.  
  10432.                    SE302A.ARJ 
  10433.                    TMOD710.ARJ 
  10434.                    ZMODEM.ARJ
  10435.  
  10436.                    Do NOT include drives or paths.
  10437.  
  10438.                    This is an illegal entry: C:\SEND\SE302A.ARJ
  10439.  
  10440.                    It should have been: SE302A.ARJ
  10441.  
  10442.                                         Effx.log 
  10443.                                Replace x With Node Number
  10444.  
  10445.                    A  temporary  file created by the  protocol  driver   
  10446.                    holding a single short integer. This should be  the   
  10447.                    average  thoughput rating, percentage, for all  the   
  10448.                    files sent during the file transfer session.
  10449.  
  10450.  
  10451.  
  10452.  
  10453.          Osiris SE         Technical Reference Manual        Page 169
  10454.  
  10455.                    This  does not hold the average CPS rate, only  the   
  10456.                    percentage of effective thoughput.
  10457.  
  10458.                    E.g., 97
  10459.  
  10460.                    Transfer was 97 percent.
  10461.  
  10462.                                       Protocol.cfg
  10463.  
  10464.                    Used to store protocol definition records.
  10465.  
  10466.                                        Default.msg
  10467.  
  10468.                    Used  to store the default messages areas  for  new   
  10469.                    callers.
  10470.  
  10471.                                        Osiris.err 
  10472.                     
  10473.                    Used  to  store information about  CRITICAL  errors   
  10474.                    that prevented Osiris from running.
  10475.  
  10476.                                        Welcome.bbs
  10477.  
  10478.                    The contains the text for the MESSAGE sent to  new,   
  10479.                    first time, callers.
  10480.  
  10481.                                       Proboard.qbs
  10482.  
  10483.                    Used  by  the Store System  and  holds  information   
  10484.                    about the location of the store database files.
  10485.  
  10486.                                        Hpdxxxx.dat 
  10487.                            Replace xxxx With Department Number
  10488.  
  10489.                    Holds the HEADER information about the products for   
  10490.                    department xxxxx.
  10491.  
  10492.                                       Tpdxxxxx.dat 
  10493.                           Replace xxxxx With Department Number
  10494.  
  10495.                    Holds   the  descriptions  for  the   products   in   
  10496.                    department xxxxxx.
  10497.  
  10498.                                       Mainpriv.qbs
  10499.  
  10500.                    Holds  the keys, access levels, and  flag  settings   
  10501.                    for the main menu.
  10502.  
  10503.  
  10504.  
  10505.  
  10506.  
  10507.  
  10508.          Osiris SE         Technical Reference Manual        Page 170
  10509.  
  10510.                                        Access.sys
  10511.  
  10512.                    Holds  the  information pertaining  to  the  access   
  10513.                    levels you have defined on the system.
  10514.  
  10515.                    NOTE: Record #0 is a place holding record and isn't   
  10516.                    used for access level information.
  10517.  
  10518.                                        Sysinfo.qbs
  10519.  
  10520.                    Used  to  hold some information about  your  system   
  10521.                    configuration.
  10522.  
  10523.                    This file will, is, gradually being phased out  and   
  10524.                    information  stored  in this file is  slowly  being   
  10525.                    moved to the individual NODEx.CFG files.
  10526.  
  10527.                                          Laston
  10528.  
  10529.                    Contains information used by the LASTON function.
  10530.  
  10531.                                         Callx.cnt 
  10532.                                Replace x With Node Number
  10533.  
  10534.                    Contains the total number of BBS callers node x has   
  10535.                    received.
  10536.  
  10537.                    This is a single 4 byte long integer.
  10538.  
  10539.                                           Nodex 
  10540.                                Replace x With Node Number
  10541.  
  10542.                    A  temporary file listing the name and city of  the   
  10543.                    caller currently on node x.
  10544.  
  10545.                    If  the  name begins with 01H, the  caller  is  not   
  10546.                    suppose to show up as being "ON-LINE."
  10547.  
  10548.                                       Bulletin.hdr
  10549.  
  10550.                    Used to store the SYSTEM bulletin headers.
  10551.  
  10552.                                       Bulletin.txt
  10553.  
  10554.                    Used  to  store  the  text  bodies  of  the  system   
  10555.                    bulletins.
  10556.  
  10557.                                          Mod.ctl
  10558.  
  10559.                    The  area moderator passwords and area numbers  are   
  10560.                    stored in this file.
  10561.  
  10562.  
  10563.          Osiris SE         Technical Reference Manual        Page 171
  10564.  
  10565.  
  10566.                                         Baud.dat
  10567.  
  10568.                    Contains  information about the TYPES  of  connects   
  10569.                    i.e., baud rates.
  10570.  
  10571.                                       Dorinfox.def 
  10572.                                Replace x With Node Number
  10573.  
  10574.                    I'll write this file, a popular DOOR control  file,   
  10575.                    when you issue the DORINFx.DEF SPL/I command.
  10576.  
  10577.                    You are limited to nodes 1 - 9. 
  10578.                          
  10579.                                         Door.sys
  10580.  
  10581.                    I'll write this file, a popular DOOR control  file,   
  10582.                    when you issue the DOOR.SYS SPL/I command.
  10583.  
  10584.                    Unlike  DORINFOx.DEF,  Door.sys  does  NOT  support   
  10585.                    multiple nodes.
  10586.  
  10587.                                          Sig.def
  10588.  
  10589.                    Contains the individual SIG definition records.
  10590.  
  10591.                                         Sigx.log 
  10592.                                 Replace x With SIG Number
  10593.  
  10594.                    Contains a log of the internode chat messages for a   
  10595.                    specific SIG. 
  10596.                
  10597.                                         Chat.dmp
  10598.  
  10599.                    Contains  screen  snapshots  created  during  SYSOP   
  10600.                    chat.
  10601.  
  10602.                                      Tcallx.bbs 
  10603.                              Replace x With Node Number
  10604.  
  10605.                    Used  to  store  the number of  calls  node  x  has   
  10606.                    received  for the CURRENT day. This is used by  CAT   
  10607.                    when it posts the statistics message the sysop.
  10608.  
  10609.  
  10610.  
  10611.  
  10612.  
  10613.  
  10614.  
  10615.  
  10616.  
  10617.  
  10618.          Osiris SE         Technical Reference Manual        Page 172
  10619.  
  10620.                                         Histx.log 
  10621.                                Replace x With Node Number
  10622.  
  10623.                    Used to stores the caller history for node x.
  10624.  
  10625.                                         Outx.qbs 
  10626.                                Replace x With Node Number
  10627.  
  10628.                    DOOR information file written during shells.
  10629.  
  10630.                                        Myyxxxx.txt
  10631.  
  10632.                    A  temporary file used to store messages packed  by   
  10633.                    the pack function. Replace yy with the node number,   
  10634.                    2 digit hex format. XXXX should be replaced by a  4   
  10635.                    digit hex number for the area being packed. If  all   
  10636.                    areas, use  zero for the area number.
  10637.  
  10638.                                          Key.def
  10639.  
  10640.                    Contains  the  ASCII  keys  allowed  during   input   
  10641.                    operations.
  10642.  
  10643.                                         Cmds.dat
  10644.  
  10645.                    Contains    the   display   text,   colors,     and   
  10646.                    formatting   characters   for   the  text   prompts  
  10647.                    within  the  main  Osiris program.
  10648.  
  10649.                                         Cmds.key
  10650.  
  10651.                    Contains  the command keys for varies prompts  like  
  10652.                    Yes/No. Used in conjunction with Cmds.dat to tailor  
  10653.                    the system to other languages.
  10654.  
  10655.                                         Nodex.cfg 
  10656.                                Replace x With Node Number
  10657.  
  10658.                    Contains system configuration information for  node   
  10659.                    x. 
  10660.          
  10661.                               Miscellaneous Items
  10662.  
  10663.          Now  we  will talk about this and that.  Items  not  directly   
  10664.          related to each other or the primary operating sub-systems of   
  10665.          Osiris, except for SPL/I.
  10666.  
  10667.          I'll  leave  SPL/I till the very last. It's by far  the  most   
  10668.          complex system in Osiris and the one NEW sysops aren't likely   
  10669.          to need right away.
  10670.  
  10671.  
  10672.  
  10673.          Osiris SE         Technical Reference Manual        Page 173
  10674.  
  10675.                                    Ansi.sys
  10676.  
  10677.          Osiris  uses  its own built in high speed ANSI emulator  that   
  10678.          writes  directly to the Video port. This accounts for a  VAST   
  10679.          increase in speed over the traditional ANSI.SYS drivers. 
  10680.  
  10681.                              What About Security?
  10682.  
  10683.          After reviewing the documentation, you will undoubtedly begin   
  10684.          to  think that I'm preoccupied with security.  If so,  you're   
  10685.          absolutely  right.  Although Osiris is perfectly  capable  of   
  10686.          serving  the  needs of the hobbyist, it was designed  with  a   
  10687.          business  environment  in mind, an environment in  which  the   
  10688.          integrity of information is of paramount importance.   Osiris   
  10689.          security  is  second  to none.  Since the  first  version  of   
  10690.          Osiris was released, the security provisions have never  been   
  10691.          overcome as the result of a software deficiency or compromise   
  10692.          of the program code.  
  10693.  
  10694.          That  was a boastful statement and up till a couple of  weeks   
  10695.          ago  (summer of 1991), accurate to the best of my  knowledge.   
  10696.          However, that suddenly changed.
  10697.  
  10698.          When I got back from a recent trip, I'd received a disturbing   
  10699.          letter from an Osiris sysop in South America. He thought he'd   
  10700.          discovered a method of breaking into Osiris remotely. 
  10701.  
  10702.          Actually  his  wife came up with it while he  was  trying  to   
  10703.          explain  about  the BBS one night. She asked   "what  happens   
  10704.          IF." I hate that question, don't you?
  10705.  
  10706.          After  reading  his  letter, I thought about  it  for  a  few   
  10707.          minutes  and just shrugged it off, wouldn't work. But  during  
  10708.          lunch  it kept nagging at me, so when I got back  I   decided  
  10709.          to try it.
  10710.  
  10711.          The first attempt failed and I almost gave up but decided I'd   
  10712.          give  it  one  more try. This time it worked.  I  had  seized   
  10713.          control  of  the computer remotely and could  do  anything  I   
  10714.          wanted.
  10715.  
  10716.          To   say   I   was  feeling  pretty  stupid   would   be   an   
  10717.          understatement.  Here I'd gone and left a doorway big  enough   
  10718.          park a garbage truck in. 
  10719.  
  10720.          By  this time I was calling the method B&S, after the  way  I   
  10721.          felt. After I explained what was happening to my girl friend,   
  10722.          she  said  something  to  the  effect  of  "Chronic  PMS  for   
  10723.          Sysop's" . . .  I had to agree with that so the name stuck.
  10724.  
  10725.  
  10726.  
  10727.  
  10728.          Osiris SE         Technical Reference Manual        Page 174
  10729.  
  10730.          I got to wondering if it was possible that other BBS programs   
  10731.          were  also open to PMS attack. It was or seem to  be  totally   
  10732.          BBS independent. And I had heard of several QuickBBS  systems   
  10733.          over  the pass year that had a lot of trouble so I  began  to   
  10734.          look into it.
  10735.  
  10736.          I  selected WildCat, Pcboard, QuickBBS, and  RemoteAccess  as   
  10737.          the  BBS programs I would test, since I had access  to  those   
  10738.          systems locally.
  10739.  
  10740.          After  a  series  of tests, I can report that  ALL  FOUR  BBS   
  10741.          programs  were  taken  over  using PMS  within  a  matter  of   
  10742.          minutes.  In  fact,  RemoteAccess fried the  network  it  was   
  10743.          running on.
  10744.  
  10745.          Although  I haven't the time nor the desire to do the  actual   
  10746.          testing, I'm sure almost ANY  BBS program is ALSO open to PMS   
  10747.          attack. 
  10748.  
  10749.          Since  I started with this, I can account for 9 instances  of   
  10750.          PMS  attack  around  the country,  mostly  QuickBBS  systems.   
  10751.          QuickBBS'  sysops  must piss a lot of people off.  I'm   sure   
  10752.          they,  the person doing the  attacking,  calls  it  something  
  10753.          other than PMS, but it's the same method.
  10754.  
  10755.          Am I going to tell you HOW to use PMS to break into a system,   
  10756.          no.  I  was  going  to  make  the  information  available  to   
  10757.          registered  Osiris  sysops, but Willy  (shyster  in  the  pin   
  10758.          stripped  suit)  said  to  keep  my  mouth  shut  about   the   
  10759.          particulars so I will.
  10760.  
  10761.          But I can tell you how to protect your system. Yes there is a   
  10762.          way, providing the software KNOWS what PMS is.
  10763.  
  10764.          Step  1:  Get Osiris v3.00 or greater. Earlier  versions  know   
  10765.          nothing  about  PMS.  Version  3.00+  has  internal  anti-PMS   
  10766.          screens.
  10767.  
  10768.          Step 2:  Use ONLY my protocol drivers, excluding Zmax. It has   
  10769.          no  anti-PMS  screens, yet. Use /V on  the  protocol  command   
  10770.          lines.
  10771.  
  10772.          Step 3:  Allow ONLY those people you have VERIFIED access  to   
  10773.          external  applications that deal with the serial  port.  This   
  10774.          includes Games, special file transfer protocols.
  10775.  
  10776.          This is very important. I can ONLY protect you as LONG as I'm   
  10777.          in  complete  control of the serial port  and  computer.  The   
  10778.          minute you run Tradwars 2002, Puma, Bi-Modem, etc. I have  to   
  10779.          give up that serial port and you have to give PMS protection. 
  10780.          
  10781.          Luckily,  most  people  that call your  system  will  not  be   
  10782.          interested in doing any harm. They just want to enjoy it.
  10783.          Osiris SE         Technical Reference Manual        Page 175
  10784.  
  10785.          But there is a small, but growing, number of people that get   
  10786.          off  on  crashing systems. Don't be one of those  they NAILED   
  10787.          because you were not prepared.
  10788.  
  10789.                                     Avs(tm)
  10790.  
  10791.          In  the early part of 1991  International  TeleCommunications  
  10792.          started  tracking  the development of a  strain  of  computer  
  10793.          virus known as "Polymophic".
  10794.  
  10795.          The  Polymophic virus uses a mutating engine, hence the  name  
  10796.          polymophic,  to generate a different version of itself  every  
  10797.          time it infects a new file. 
  10798.  
  10799.          Because all occurrences of the virus are different, finding a  
  10800.          signatures  of  any  two instances of this  virus  is  highly  
  10801.          improbable.  All  this  boils  down  to;  normal  methods  of  
  10802.          detecting the virus are totally useless.
  10803.  
  10804.          It  is  estimated that the earlier versions of  the  mutating  
  10805.          engine  can produce some 4 billion different forms and  there  
  10806.          are already improved mutating engines being developed as  you  
  10807.          read this.
  10808.  
  10809.          In  an attempt to safe guard our customers, we  installed  an  
  10810.          ANTI-POLYMOPHIC  system, AVS(tm),  in Osiris.  
  10811.  
  10812.          Even  though CAT is capable of detecting a POLYMOPHIC  virus,  
  10813.          any  virus  for that matter, the SOONER it is  detected,  the  
  10814.          less damage it can do. 
  10815.  
  10816.          AVS(tm),  Anti  viral shield, is an integrated  part  of  the  
  10817.          Osiris.exe program and uses a triple level protection  system  
  10818.          to  detect  any  changes in itself that may be  caused  by  a  
  10819.          virus.
  10820.  
  10821.          When  Osiris  first comes on-line, it will do a  QUICK  check  
  10822.          that  takes roughly 1/10th of a second. The QUICK  check   is  
  10823.          capable  of  detecting most virus infections. If  it  detects  
  10824.          anything,  it will drop carrier, delete itself (to keep  from  
  10825.          spreading the virus), and it will display this message:
  10826.  
  10827.          You have an ACTIVE VIRUS on your computer!
  10828.  
  10829.          When the caller hangs up Osiris will engage the two  detailed  
  10830.          AVS  sub-systems for a much more detailed analyses.  It  is  
  10831.          almost  impossible  (one never says TOTALLY  impossible  when  
  10832.          dealing with a computer) for anything to escape the  detailed  
  10833.          analyses.  These  tests take between one and two  seconds  to  
  10834.          complete.
  10835.  
  10836.  
  10837.  
  10838.          Osiris SE         Technical Reference Manual        Page 176
  10839.  
  10840.          Again,  if  anything is detected, Osiris will  drop  DTR  (to  
  10841.          prevent the modem from answering), delete itself (to  prevent  
  10842.          the  spread  of the virus), and finally it will  display  the  
  10843.          message
  10844.  
  10845.          You have an ACTIVE VIRUS on your computer!
  10846.  
  10847.  
  10848.                                     What To Do?
  10849.  
  10850.               If  AVS, or CAT, does detect  something,  run   SCAN.EXE   
  10851.               to see if it  can  determine  what  virus  has  infected  
  10852.               your  system. If it  can  identify  the   virus,  follow  
  10853.               the guidelines SCAN provides for CLEANING  the infection  
  10854.               from the system.
  10855.  
  10856.               If  SCAN can't figure it out rename one of the  infected  
  10857.               file  to  "VIRUS.TXT," place it in an archive, and  send  
  10858.               it to  us so it can be analyzed.
  10859.  
  10860.  
  10861.                                 Memory Manager
  10862.  
  10863.          Osiris SE has an internal Virtual Memory Manager  (Referenced   
  10864.          simply as VMS) that assures the maximum amount of free memory   
  10865.          is  available for all external applications such as  protocol   
  10866.          drivers, SPL/I _EXECUTE calls, archive calls, etc.
  10867.  
  10868.          VMS  will use either your DISK or EMS memory to store  mapped   
  10869.          Memory Segments before making these calls. 
  10870.  
  10871.          If  All  memory  is made available, VMS will  reserve  6K  of   
  10872.          conventional memory for itself.
  10873.  
  10874.          Usually VMS can regain control of any locked computer  during   
  10875.          protocol shells and SPL/I execute calls. If you need to  dump   
  10876.          the  program you've called because it locked up or  you  just   
  10877.          want to, press Ctrl-Alt Ins. VMS will kick the program out of   
  10878.          memory and reinstall Osiris.
  10879.  
  10880.  
  10881.  
  10882.  
  10883.  
  10884.  
  10885.  
  10886.  
  10887.  
  10888.  
  10889.  
  10890.  
  10891.  
  10892.  
  10893.          Osiris SE         Technical Reference Manual        Page 177
  10894.  
  10895.                            Vms Errors And Their Meanings
  10896.  
  10897.                                    Too Many Open Files
  10898.  
  10899.                    This error occurs when VMS tries to open the  temp.   
  10900.                    file and all available file handles are already  in           
  10901.                    use.   The   solution is to  increase  the   FILES=    
  10902.                    statement  in config.sys.
  10903.  
  10904.                                      Access  Denied
  10905.  
  10906.                    Means that the root directory for  the  temp.  file    
  10907.                    is  already  full.  This is probably  a  good  time    
  10908.                    to consider a little disk management.
  10909.  
  10910.                                  Cannot Locate Comspec
  10911.  
  10912.                    This  error means VMS could not locate the  command   
  10913.                    processor  using the COMSPEC environment  variable.   
  10914.                    The   COMSPEC  variable  MUST  give  the  name  and   
  10915.                    location of  the command  interpreter.   Generally,    
  10916.                    you  should   not   hit   this  error,  because  if   
  10917.                    COMSPEC  is  not  set  properly  you  will   almost           
  10918.                    always get a lockup after running any program.
  10919.  
  10920.                    QuickBasic   and  Bordland   Turbo Pascal  programs   
  10921.                    have  been  known to damage the   environment   and    
  10922.                    cause  the   above problem.
  10923.  
  10924.                            Memory  Control  Blocks Are Damaged
  10925.  
  10926.                    This means  that  memory that  belongs  to   Osiris   
  10927.                    has   been  overwritten,  QuickBasic  programs  are   
  10928.                    bad  about this and so are some TP  programs   that   
  10929.                    use   overlays.  If  I can't follow  the  chain  of   
  10930.                    memory  blocks  to   determine   how   memory    is    
  10931.                    structured . . .  This is only possible if you free   
  10932.                    only PART of the memory instead of  all of  it.
  10933.  
  10934.                                  Not  Enough Disk Space
  10935.  
  10936.                    This  error means there is not  enough free   space    
  10937.                    to  store  the TEMP. file. I'll  check   the   disk   
  10938.                    space  BEFORE  attempting to create the file  so  I   
  10939.                    don't  waste time if there is not enough space.
  10940.  
  10941.                                  Error Writing The File
  10942.  
  10943.                    This  should  NOT occur since I  insure  there   is    
  10944.                    enough  space  for the  file  before  writing   it.   
  10945.                    However,  if you get this error, it means that  DOS   
  10946.                    returned an error while the file was being  written   
  10947.                    to disk. 
  10948.          Osiris SE         Technical Reference Manual        Page 178
  10949.  
  10950.                                   Too Many File Handles
  10951.  
  10952.                    This  means  that  there  is  more  than  255  file    
  10953.                    handles  in  the extended file handle  table.   VMS    
  10954.                    can handle upto 255 MAXIMUM. Out of  curiosity,   
  10955.                    how did you  get DOS to allow more?
  10956.  
  10957.                            Interrupt(s) Changed During A Shell
  10958.  
  10959.                    This error should  never happen. VMS will save (and   
  10960.                    restore) any interrupt that  falls in  the area  of    
  10961.                    memory that's to be freed. Interrupt 14H  is always    
  10962.                    saved  and restored even if it is NOT in the   area    
  10963.                    of memory to be freed.
  10964.  
  10965.                    The   only  time I can see the above  happening  is   
  10966.                    when  you  use one of the command line switches  to   
  10967.                    reduce  the amount of free memory requested and  an   
  10968.                    interrupt lies outside of the area to be freed.
  10969.  
  10970.                                       Too May Mcbs
  10971.  
  10972.                    This error means there are more MCBs  than I   deal   
  10973.                    with. I can handle up to 80 which  should  be  MORE   
  10974.                    than enough for 99.9 percent of the programs.
  10975.  
  10976.                    Not Enough Memory To Load The Command Interpreter
  10977.  
  10978.                    This  means  there was not enough  memory  for  the   
  10979.                    command interpreter to be loaded in memory to  call   
  10980.                    the child program. The work  around is  to  specify   
  10981.                    that  MORE  memory  is required   for   the   child   
  10982.                    program.
  10983.  
  10984.                     To load COMMAND.COM, you generally need to have at   
  10985.                    least  32K free, and I suggest at least 64K.
  10986.  
  10987.                    The   above  list  isn't ALL the possible   errors.    
  10988.                    There   are   others, but the likely hood  of  your   
  10989.                    system locking up if they occur is so high . . . 
  10990.  
  10991.                                   Locked Dte
  10992.  
  10993.          If you're running a LOCKED DTE, locking the serial port at  a   
  10994.          fixed  baud rate, you have to use an environment variable  to   
  10995.          define  your  fixed DTE rate. This variable is  COMx  with  x   
  10996.          being the com port to use.
  10997.  
  10998.                       e.g. SET COM1=19200, SET COM2=9600
  10999.  
  11000.          Osiris  supports fixed DTE rates up to and including  115,200   
  11001.          baud.
  11002.  
  11003.          Osiris SE         Technical Reference Manual        Page 179
  11004.  
  11005.                                Keyboard Commands
  11006.  
  11007.          For  list, press F1 while on-line in local mode.  Sysop  Help   
  11008.          screen will pop open.
  11009.  
  11010.                             Confirming Sysops Intentions
  11011.  
  11012.               When you press one of the sysop command keys, F1  though   
  11013.               F10,  you  will be asked to confirm your  intentions  by   
  11014.               pressing  'Y'. I'll give you no more than 3  seconds  to   
  11015.               press 'Y' before aborting the sysop command.
  11016.  
  11017.               I've  done  this  for  two  reasons.  First,  a  lot  of   
  11018.               businesses  run  Osiris systems and a lot  of  them  use   
  11019.               electronic   air  cleaners. That's good, it  keeps   the   
  11020.               air    clean,   but  it  also  fills  it   with   static  
  11021.               electricity.   A  computer keyboard is one of the  first  
  11022.               thing effected  by  static electricity. Stray characters  
  11023.               have  been known  to  creep into the picture every  time  
  11024.               one of those  cleaners  POP. 
  11025.  
  11026.               The  confirmation process will keep one of those  STATIC   
  11027.               pops   from  accidentally kicking a  caller  into   CHAT   
  11028.               mode,  hanging up, and giving him twit access, etc.
  11029.  
  11030.               The  second  reason is young kids. Computers  draw  them   
  11031.               like    a   magnet  and  this  will  keep   them    from   
  11032.               accidentally   knocking  someone off-line,  hanging  the  
  11033.               computer, dropping  access levels, etc.
  11034.  
  11035.                                 Node Restricter
  11036.  
  11037.          If   you'll   run   the  user.exe,   you'll   find   a  field    
  11038.          called  node  Restricter.  If you  enter  anything  in   this           
  11039.          field   other   than zero, I will force that caller  to   use           
  11040.          only that node.
  11041.  
  11042.          If  he attempts to log on to any other node,  the text   file   
  11043.          nodeX.asc/mmu/ans,   X   being  the  value  in    the    user           
  11044.          records node  Restricter, will be shown. It  should   contain           
  11045.          something   to  the  effect  that  he's  been  assigned    to           
  11046.          node so-and-so and must call that number.
  11047.  
  11048.          After the files been displayed, I'll hang-up.
  11049.  
  11050.          There  are several conditions where this can come  in  handy.
  11051.  
  11052.          Assuming  you have a two line system and one line has  a  HST 
  11053.          9600 baud modem on it and the other has a 2400 baud modem.
  11054.  
  11055.          To  maximize the HST, you may want to restrict that  line  to 
  11056.          only 9600+ callers and have the slower baud rates use the 2nd 
  11057.          line or node 2. 
  11058.          Osiris SE         Technical Reference Manual        Page 180
  11059.  
  11060.          If  you  want to assign individuals to  MULTIPLE  nodes  then 
  11061.          you'll   need   to use SPL/I. You can get very   complex   in           
  11062.          your assignments with it.
  11063.  
  11064.                                Command Stacking
  11065.  
  11066.          Osiris has one of the most advanced command-stacking  systems   
  11067.          you're  likely to  encounter.  To stack  commands in  Osiris,    
  11068.          place at least ONE blank space between commands. 
  11069.   
  11070.          Commands may  be stacked ANY  place, even  at Y/N prompts. As   
  11071.          many as  40 commands  may be stacked in most places.
  11072.  
  11073.                              Command Stacking Example 
  11074.   
  11075.               Assume  you have suddenly decided that you need  to  log   
  11076.               off  at the "[N]ext  [R]eply  [Q]uit ?" " prompt.   This   
  11077.               can be done by stacking the commands 'Q G N' which  will    
  11078.               abort  the  "Next  msg" prompt  and then proceed to  log   
  11079.               you off the system.
  11080.  
  11081.               NOTE: The above prompt doesn't really exist but was used   
  11082.               as an example.
  11083.  
  11084.                             Special Stacking Characters 
  11085.   
  11086.               There   are   TWO   special  characters   reserved    by    
  11087.               Osiris when dealing with command line stacking, a  semi-  
  11088.               colon  (;)   and  a  colon  (:).    The   semi-colon  is    
  11089.               translated  into   a Carriage Return  <Enter>   and  the   
  11090.               Colon is  translated into a <Ctrl-K>. 
  11091.                
  11092.                    NOTE:  The  only place  command  stacking   
  11093.                    will   not   work  is  jumping   into   a   
  11094.                    CUSTOMIZED command from another area that   
  11095.                    doesn't normally exist.
  11096.  
  11097.                    e.g. You've added a customized command to   
  11098.                    the  message areas that lists all  system   
  11099.                    callers  and  the  command key  is  !  to   
  11100.                    access  this  option. Caller is  in  File   
  11101.                    Areas and does a M M !.
  11102.  
  11103.                    He will go to the main menu, then to  the   
  11104.                    message  areas,  but  will  get   stopped   
  11105.                    because "!" doesn't normally exist. 
  11106.  
  11107.  
  11108.  
  11109.  
  11110.  
  11111.  
  11112.  
  11113.          Osiris SE         Technical Reference Manual        Page 181
  11114.  
  11115.                                     Hotkeys 
  11116.   
  11117.          Osiris  allows  you  to  switch to  HOTKEYS instead of  using   
  11118.          advanced Command Stacking.
  11119.  
  11120.          You should make your users aware that they can never get  the   
  11121.          display screen to instant stop and switch. 
  11122.  
  11123.          This isn't because the HOTKEY setup isn't good. It's  because   
  11124.          of  the  much faster screen displays. Most of  the  time  the   
  11125.          screen's already out the com port or at least sitting in  the   
  11126.          modems transmit buffer by the time the caller sees the  first   
  11127.          character. Once it has gone this far there isn't anything you   
  11128.          can do to stop it. 
  11129.                                    Birthdate
  11130.  
  11131.          Osiris does require the caller to enter his or her  birthdate   
  11132.          and  I'll   use it as a secondary security  check  every  6th   
  11133.          call.
  11134.  
  11135.          You'll be required to RE-ENTER the birthdate and if it is not   
  11136.          correct,  I'll  notify you and then hang up  on  the  caller.  
  11137.  
  11138.          If I do hang up because you couldn't enter the correct  birth   
  11139.          date,  I  will  NOT update the  TIMES  called  field.  You'll   
  11140.          CONTINUE  to  get the secondary security check until  you  DO   
  11141.          enter it correctly.
  11142.  
  11143.          I  also check the birthdate against the CURRENT date  and  if   
  11144.          the   month  and  day  match,  callers  birthday,  the   file   
  11145.          "BIRTH.MMU/ASC/ANS"  will be shown. You can wish him a  happy   
  11146.          birth day with this file. 
  11147.   
  11148.                            Caller's Telephone Number 
  11149.   
  11150.          New callers must enter their  home phone number when  filling   
  11151.          their  user record.  You  will need to  build a  create  text    
  11152.          file   called  "PHONE.ASC/MMU/ANS"  (  or  use  the   default   
  11153.          file  created  during  the set up)  that  will  display   the    
  11154.          prompt asking  for the  phone  number.   It is suggested that   
  11155.          you  display some type of  required phone  number  formatting   
  11156.          information.
  11157.  
  11158.                                       Example 
  11159.   
  11160.               Enter  HOME  phone  number using one  of  the  following  
  11161.               formats:  
  11162.  
  11163.               United States, Non Local caller:   xxx xxx-xxxx 
  11164.               Trans-Atlantic                 :    xx xxx-xxxx  
  11165.               Local Caller (Not a LD call)   :       xxx-xxxx 
  11166.               >
  11167.  
  11168.          Osiris SE         Technical Reference Manual        Page 182
  11169.  
  11170.               Notice  that a ">" was  entered as the VERY LAST ITEM in   
  11171.               the  file.   A carriage  return was not used  after  it.  
  11172.               That  will  place   the  cursor  directly  after the ">"  
  11173.               making  it  look  neater. I'll   not  FORCE  any of  the   
  11174.               above  formats,   but  I  will  require you to  enter  a  
  11175.               minimum of 8 characters.
  11176.  
  11177.  
  11178.          I'll strip out all non-numeric characters and do a search  on   
  11179.          the existing user records for a matching phone number, if the   
  11180.          search is allowed. 
  11181.  
  11182.          Some  BBS  programs  have fancy  (xxx)  xxx-XXXX  formatting.   
  11183.          Osiris doesn't do this because not all countries use the same   
  11184.          type of phone number format that we do in the United  States.   
  11185.          You can built a custom SPL/I command file to ADD it. There is   
  11186.          one  in the SPL/I 4.00 source file directory on  Vetlink  III   
  11187.          that can be used in the United States.
  11188.  
  11189.          Some  BBS  programs,  WildCat for instances,  use  the  phone   
  11190.          number as a security check. 
  11191.  
  11192.          Not only is this pretty poor security, it's down right silly.   
  11193.          If I know your name, just how much trouble is it to open  the   
  11194.          phone book and get your phone number? 
  11195.   
  11196.                                  Screen Length 
  11197.   
  11198.          I'll  allow  screen length settings from 6 (lap tops)  to  50   
  11199.          (VGA). 
  11200.                                    Passwords
  11201.  
  11202.          A  MAJOR  problem  in many areas is callers  using  the  same   
  11203.          password on multiple systems. Let someone get that  password,   
  11204.          and they've access to any system that person calls.
  11205.  
  11206.          It's  understandable  why  people use the  same  password  on   
  11207.          multiple  systems. It's easy to remember and coming  up  with   
  11208.          unique password can be difficult.
  11209.  
  11210.          To  avoid  this problem, I'll only allow you  to  select  the   
  11211.          FIRST character of the password. I will randomly generate the   
  11212.          remaining 4 characters for a total of 5 characters.
  11213.  
  11214.  
  11215.                    NOTE:  You may override this  (nodeX.INI)   
  11216.                    and allow the caller to select his or her   
  11217.                    entire password
  11218.  
  11219.  
  11220.  
  11221.  
  11222.  
  11223.          Osiris SE         Technical Reference Manual        Page 183
  11224.  
  11225.                                  Changing Passwords
  11226.  
  11227.               Many  corporations  require their  personnel  to  change   
  11228.               passwords on a weekly bases, to avoid the  possibilities   
  11229.               of someone "HACKING" it.
  11230.  
  11231.               I  will,  at  the  change  menu,  allow  the  caller  to   
  11232.               REGENERATE a new password at any time.
  11233.  
  11234.                                  Rotating Passwords
  11235.  
  11236.               If you do have to periodically change your password, you   
  11237.               can  have Osiris track the time for you.
  11238.  
  11239.               You determine the number of calls that each password  is   
  11240.               good   for  and  when  that  limit  is   reached,   I'll   
  11241.               automatically prompt for or generate a new password.
  11242.  
  11243.                                      Alias
  11244.  
  11245.          An  ALIAS  is  a secondary name you might  want  to  use,  in   
  11246.          messages, in place of your real name.
  11247.  
  11248.          There  are  several  reasons to use  an  Alias  (professional   
  11249.          people  may  not  wish to be bothered with  giving  out  free   
  11250.          advice). 
  11251.  
  11252.          When  a  new  caller  fills  out  his  or  her  user   record   
  11253.          , there is a field provided so they may enter an ALIAS  name.   
  11254.          All Alias names MUST be unique. 
  11255.  
  11256.          The  personal newmail check and the conference newmail  check   
  11257.          can  locate  mail to the caller if the mail is  addressed  to   
  11258.          their real name or their alias name.
  11259.  
  11260.          You do, of course, have control over whether or not an  ALIAS   
  11261.          may be used in ANY conference area.
  11262.  
  11263.                                 Private Listing
  11264.  
  11265.          You're given the option of having your name withheld from the   
  11266.          user  list display. This goes along with the ALIAS  names  to   
  11267.          offer some degree of privacy. 
  11268.  
  11269.          When  a user list display is requested and I come across  any   
  11270.          caller not wishing to have his or her name display,  "Private   
  11271.          Listing" is used in place of the  name and  "XXXXXXXXXXXXXXX"   
  11272.          is  used in place of the city. Your caller list will  NOT  be   
  11273.          blank under any conditions.
  11274.  
  11275.          Those having the privacy switch turned on will not be  listed   
  11276.          as last caller to the system and will not be able to  receive   
  11277.          CB inter-node Email. 
  11278.          Osiris SE         Technical Reference Manual        Page 184
  11279.  
  11280.  
  11281.          If  they upload any files, only the you will SEE their  name.   
  11282.          Other callers will see N/A as the name of the uploader.
  11283.  
  11284.                                Accounting System
  11285.  
  11286.          After  you  have entered your password  your  current  credit   
  11287.          level  will  be shown, providing the time billing  system  is   
  11288.          active. 
  11289.  
  11290.          The accounting system settings can be found in the  NodeX.INI   
  11291.          file.
  11292.  
  11293.          There has been some confusion on just how this system  works,   
  11294.          although it is fairly straight forward.
  11295.  
  11296.          Your time on-line is tracked and when you hang up, I take the   
  11297.          number  of  minutes spent ON-LINE and divides it by  the  PER   
  11298.          MINUTE  OF CONNECT TIME and multiple THAT by the PENNIES  PER   
  11299.          MINUTE  variable.  That amount is deducted from  your  MATRIX   
  11300.          CREDIT FIELD.
  11301.  
  11302.                            Message Conference Check
  11303.  
  11304.          I'll run a Message   Conference verification check on   areas   
  11305.          you have selected, each time you log on to  the system.   
  11306.  
  11307.          I'll take each  area selected  and verify  the area  is STILL   
  11308.          accessible.   If  the area has  been removed  or  the  access   
  11309.          level  to  that area has been changed and your  access  level   
  11310.          isn't high enough, I'll remove the area from your list.
  11311.  
  11312.          A  message similar  to the following  will be placed in   the   
  11313.          log if I remove any areas.
  11314.  
  11315.                             Area #2 not accessible.
  11316.  
  11317.                                  Stats Screen
  11318.  
  11319.          Following  the  conference verification check, I'll  show  a   
  11320.          file called "sys_stat.ASC/MMU/ANS," providing it exists. 
  11321.  
  11322.                    NOTE:  Most sysops use this file to  show   
  11323.                    personal  statistics  as well  as  system   
  11324.                    statistics using SPL/I.
  11325.  
  11326.                       Personal Mail Check, Message Center 
  11327.  
  11328.          Then A NEW personal mail check is done. If you have  personal    
  11329.          mail waiting, the message will be displayed and you have  the   
  11330.          option of replying. This is NOT optional.
  11331.  
  11332.  
  11333.          Osiris SE         Technical Reference Manual        Page 185
  11334.  
  11335.                            Conference New Mail Check
  11336.  
  11337.          This  is a Conference Area New mail scan to see if  there  is   
  11338.          any  NEW mail addressed to you. If so, the message header  is   
  11339.          displayed and you have the option of reading it, skipping it,   
  11340.          or quitting.
  11341.  
  11342.          The newmail check is very fast and can scan the index file at   
  11343.          the rate of about 15000 messages per second. 
  11344.  
  11345.          Following  the  scan for PERSONAL new conference  mail,  each   
  11346.          conference area having NEW messages will be displayed. 
  11347.  
  11348.                             Searching For New Files 
  11349.   
  11350.          After   the  string  of  welcome  files  (welcome,  welcome2,   
  11351.          welcome3, welcome4, and welcome5) , you're given  the  option    
  11352.          of searching  for NEW  files, if you have this turned on. 
  11353.   
  11354.          The  secondary  index  FILES.DAT is search,  instead  of  the   
  11355.          PHYSICAL file area to reduce the load on the hard drive,  for    
  11356.          any  new files uploaded to  the  system since  the  specified   
  11357.          date.
  11358.  
  11359.          If  one  is  found,  the   file  name  along  with  the  file   
  11360.          description is shown.
  11361.  
  11362.          IF you have access  to the Download  Command  for that   area   
  11363.          and provided you have this prompt active, you'll  be asked if    
  11364.          you'd like to download or TAG the file for BATCH downloading.   
  11365.  
  11366.          This   should make  getting NEW files much easier  since  you   
  11367.          don't have to remember filenames or directories.
  11368.  
  11369.                               Logging The Search Date
  11370.  
  11371.               After  the  search has been completed, you'll  have  the   
  11372.               option of LOGGING the search date, Yes or No.
  11373.  
  11374.               If  you  log-on and there is an external  event  or  you   
  11375.               simply don't have time to download, for whatever reason,   
  11376.               you  can answer No to the log prompt and the  next  time   
  11377.               you call, the same date will be used for the new uploads   
  11378.               search. 
  11379.  
  11380.  
  11381.  
  11382.  
  11383.  
  11384.  
  11385.  
  11386.  
  11387.  
  11388.          Osiris SE         Technical Reference Manual        Page 186
  11389.  
  11390.                             Hard Drive Maintenance 
  11391.   
  11392.          If   you  were running  some  other  BBS  system,   you   are   
  11393.          probably optimizing your  hard drive  at *least*  every other    
  11394.          day.    With Osiris, you probably won't need to  optimize  it   
  11395.          for  over  a  month  and the hard  drive   access  time  will   
  11396.          probably  appear as  smooth as it was the day  you  installed   
  11397.          Osiris.    With  one  big  message   file  per  area,  almost   
  11398.          invariably   laid  out in a contiguous  set of sectors  on  a   
  11399.          SeaGate S251,  the head makes one smooth sweep  from one  end   
  11400.          to  the   other  with so few movements that  the  little  red   
  11401.          indicator  light  barely   blinks at   all.    Not  only   is   
  11402.          message  access   time  faster  using  Osiris   message  base   
  11403.          technology,  but your hard drive should fare better   
  11404.          for wear and tear. 
  11405.                                 Error Handling
  11406.  
  11407.          If I detect any  type of file handling error  when attempting   
  11408.          to open, read,  write, seek to  a new position,  or create  a    
  11409.          new file, I'll open the  "Osiris.ERR" log file  and post  the   
  11410.          error number along with the date and time the error happened   
  11411.          and the name of file.
  11412.  
  11413.          I'll  also  write  it to  the screen  in  case  something  is   
  11414.          seriously wrong and I can't use the Osiris.ERR log. 
  11415.   
  11416.          I'll notify  the caller  that a System  Error has   occurred,   
  11417.          apologize  for  the problem,  and then dump  the  caller   by   
  11418.          dropping  DTR.   I'll  then exit back to DOS  with  an  error    
  11419.          level of 101.
  11420.  
  11421.          This errorlevel should  be trapped and  the mailer should NOT    
  11422.          be  brought back up.   This will leave things in  the   state   
  11423.          they  were  in when  the  error  occurred  so   the   problem    
  11424.          may  be  found  and corrected.
  11425.  
  11426.          The  General  Error Routine just  logs  things  like  missing   
  11427.          sysinfo, not baud rates, fossils, etc. 
  11428.   
  11429.                             Sample Osiris.err
  11430.  
  11431.                     Error L1000: 'No baud rate specified!'  
  11432.                     Error L1000: 'No port number specified!'  
  11433.                     Error L1000: 'Sysinfo missing'  
  11434.                     Error F2002: 'access.sys'  
  11435.                     Error L1000: 'No access level information!'
  11436.  
  11437.          To understand  the meaning  of the  F20XX error  number,  use    
  11438.          the following  table,  making note of the  last  two  digits.   
  11439.          NOTE:  These  are  NOT internal errors, they  are  DOS  error   
  11440.          messages.  I'll intercept the error messages and Osiris  will   
  11441.          do the DISPLAY to prevent DOS from HALTING the program.
  11442.  
  11443.          Osiris SE         Technical Reference Manual        Page 187
  11444.  
  11445.                                  F20xx Error Codes 
  11446.   
  11447.                     F2001   Invalid DOS function number requested.  
  11448.                     F2002   Specified file not found  
  11449.                     F2003   Specified path not found  
  11450.                     F2004   too many open files  
  11451.                     F2005   Access to file denied  
  11452.                     F2006   Specified handle is invalid  
  11453.                     F2007   Memory control block was destroyed  
  11454.                     F2008   Not enough memory for request  
  11455.                     F2009   Invalid memory block address specified  
  11456.                     F2010   Environment invalid  
  11457.                     F2011   Invalid format  
  11458.                     F2012   Invalid file access code  
  11459.                     F2013   Invalid data  
  11460.                     F2015   Drive is not valid  
  11461.                     F2099   Gdosint error
  11462.  
  11463.                                Warning Messages 
  11464.   
  11465.          Some possible  WARNING messages  that might  appear in   your   
  11466.          Osiris log:
  11467.                                        Lm1001 
  11468.   
  11469.               You   had   an area selected that no longer exists   ,it   
  11470.               might    have   been deleted  or the  access  level  was  
  11471.               changed and  your  access level is not high enough.
  11472.  
  11473.               I've detected it  and removed the area from  your list. 
  11474.  
  11475.                                        Lm1002 
  11476.   
  11477.               For  some  reason,  the total number  of  message  areas    
  11478.               selected  shows greater than 50.  I've detected this and  
  11479.               corrected    it    by  lowering   it  to   the   maximum  
  11480.               allowed.
  11481.  
  11482.               Check  your DEFAULT.MSG file and make  sure you do   NOT   
  11483.               have   more than 49 areas define. The   following  three   
  11484.               error messages  should  NEVER  appear.    
  11485.  
  11486.               Files  were   left open in one of  the  sub-systems  and  
  11487.               when the  caller switched system,  Osiris detected it. 
  11488.  
  11489.                                 Error Xxxx9000 
  11490.  
  11491.          They  will  more  than  likely never be  seen.   If  they  do    
  11492.          appear, it will probably be right after a MAJOR code change. 
  11493.   
  11494.          ERROR MAIN9000, Contact International TeleCommunications 
  11495.          ERROR FILE9000, Contact International TeleCommunications 
  11496.          ERROR MSG9000,  Contact International TeleCommunications
  11497.  
  11498.          Osiris SE         Technical Reference Manual        Page 188
  11499.   
  11500.                                 Ansi Esc Filter
  11501.  
  11502.          Osiris has  an ANSI <Esc> (ASCII 27) filter on the File  area   
  11503.          Type command, the  archive Contents  Command and  on all Read    
  11504.          Message displays.
  11505.  
  11506.          Prevent  someone from  uploading a file that   contains  ANSI   
  11507.          sequences  that  could reprogram  your keyboard  (to   format   
  11508.          your  hard  drive  or to do just  about  anything  else  they   
  11509.          wished). 
  11510.                                 Slash Commands
  11511.  
  11512.          One   of the problems I've run into is wanting  to  add  more   
  11513.          custom  commands or sub-systems to my system  than  available   
  11514.          slots on the primary menu(s). I want them available FROM  the   
  11515.          menu without having to resort to SUB-MENUS.
  11516.  
  11517.          This   isn't too big of a problem at the main  menu   because    
  11518.          you  have  10 SPL/I mainxx.PRG files to play with,  but  even    
  11519.          that  number   is  rapidly  becoming  to  few.   The   public    
  11520.          conference  areas  and  file  areas only  have  1  such  file   
  11521.          available, far to few for me.
  11522.  
  11523.          You  can't  alter  the  file board  (filboard.qbs),   message    
  11524.          board   (msgboard.qbs),  etc. without making every  secondary   
  11525.          program obsolete. 
  11526.  
  11527.          That's where the Slash commands come into the picture.
  11528.  
  11529.          A   Slash   command   is executed  when  you   pressing   the   
  11530.          forward slash key, /. 
  11531.  
  11532.          You can use up to 8 characters for the command. 
  11533.  
  11534.          The   slash   command   can be entered in any  one   of   the    
  11535.          three  primary  systems; main, public  Conference areas,  and   
  11536.          the file areas. 
  11537.  
  11538.          The command following the / is not really a command, it is  a   
  11539.          FILE NAME.
  11540.  
  11541.                    NOTE:  The  '/' is NOT part of  the  file   
  11542.                    name  and  does NOT count towards  the  8   
  11543.                    character   limit.  The  slash,   /,   is   
  11544.                    SYMBOLIC and is used simply to SHOW  that   
  11545.                    a SLASH command is being executed.
  11546.  
  11547.          IF   that   file  exists,  it will be   shown   and   any/all    
  11548.          SPL/I commands can be used. 
  11549.  
  11550.          The  file for the slash command can reside in any one of  TWO   
  11551.          places.
  11552.  
  11553.          Osiris SE         Technical Reference Manual        Page 189
  11554.  
  11555.          If  you enter a slash command from the main  menu, I'll  look   
  11556.          for  the  file  in a subdirectory OFF  the   TEXT  directory.   
  11557.          Remembering   that   the  TEXT  directory  is   where    your   
  11558.          ASC/MMU/ANS files are.
  11559.  
  11560.          Assuming that your TEXT directory is C:\OSIRIS\TEXT and   you   
  11561.          enter /GAMES at the main menu  then  I'll attempt to show the   
  11562.          file C:\OSIRIS\TEXT\MAIN\GAMES.PRG
  11563.  
  11564.          You'll  notice  that  GAMES.PRG was expected  to  be  in  the   
  11565.          directory C:\OSIRIS\TEXT\MAIN 
  11566.  
  11567.          IF   it   wasn't  there,  then  I'll  look   for   the   file   
  11568.          C:\OSIRIS\TEXT\GAMES.PRG
  11569.  
  11570.          This  lets you RESTRICT a  slash  command  to   a  particular   
  11571.          menu  or  make  it system wide by placing it  in   your  TEXT   
  11572.          directory.
  11573.  
  11574.          Each   area  has its own specific sub-directory  that   I'll   
  11575.          look in FIRST.
  11576.  
  11577.          File Areas : Sub Directory FILE 
  11578.          Public Conference areas : Sub-Directory MSG 
  11579.          Main Menu : Sub-Directory MAIN
  11580.  
  11581.          Taking the above example but assuming you selected the  slash    
  11582.          command  from each of the above area and assuming  that  your   
  11583.          TEXT directory is C:\OSIRIS\TEXT AND you enter /GAMES. 
  11584.  
  11585.          File Area :  C:\OSIRIS\TEXT\FILE\GAMES.PRG 
  11586.          Public Conference Area : C:\OSIRIS\TEXT\MSG\GAMES.PRG 
  11587.          Main Menu : C:\OSIRIS\TEXT\MAIN\GAMES.PRG
  11588.  
  11589.          Failing  to FIND the file  in  their  respective directories,    
  11590.          meaning  that  the command MAY be a   system   wide  command,   
  11591.          C:\OSIRIS\TEXT\GAMES.PRG
  11592.  
  11593.          This allows you to add literally MILLIONS of custom  commands   
  11594.          without having to ADD, CHANGE, or ALTER the structures of ANY   
  11595.          Sub-System in Osiris.
  11596.  
  11597.          If  you enter / and nothing else or /? then I'll try to  show   
  11598.          the  file SLASH.PRG. I'd suggest you use this as a HELP  file   
  11599.          to list your slash commands.
  11600.  
  11601.                                     Restrictions 
  11602.           
  11603.               A  SLASH  command CAN be command stacked but  does  have   
  11604.               some restrictions. For instances, if you're in the  FILE   
  11605.               AREA and do a "M /GAMES" and you're expecting  to go  to   
  11606.               the Main menu and execute the slash command GAMES   then   
  11607.               you'll find  that's NOT the case.  
  11608.          Osiris SE         Technical Reference Manual        Page 190
  11609.  
  11610.  
  11611.               The  PROPER way to STACK a slash command is to STACK  it   
  11612.               as  TWO  separate commands, / GAMES, because it  IS  two   
  11613.               different  commands. / ACTIVATES slash system and  GAMES   
  11614.               being the slash systems COMMAND.
  11615.  
  11616.               You can't HOTKEY into a SLASH command. In other   words,   
  11617.               entering   a   /  while a menu is  being  display   will    
  11618.               have  NO effect and will be ignored.
  11619.  
  11620.                                    Illegal Names
  11621.  
  11622.               I'll not allow you to use any SLASH command that  starts   
  11623.               with the following.
  11624.  
  11625.               COM 
  11626.               CON 
  11627.               PRN 
  11628.               AUX 
  11629.               LPT
  11630.  
  11631.               This prevents you from entering COM1 or AUX which  would   
  11632.               LOCK up the system.
  11633.  
  11634.                                     Last On
  11635.  
  11636.          If  you have  a busy  system, you  can stop the  same  caller   
  11637.          from logging  back  on-line until someone else   has  had   a   
  11638.          chance  to log-on. 
  11639.  
  11640.          To  engage  this  option,  create a  file    in  your  osiris   
  11641.          directory called "laston."
  11642.  
  11643.          The file "laston" contains two fields, elapse time and access   
  11644.          level. 
  11645.  
  11646.          e.g.
  11647.  
  11648.          Copy Con Laston<CR> 
  11649.          10 20^Z
  11650.  
  11651.          Field  one,  elapse time, is the amount of  time  the  system   
  11652.          stands idle, no callers. If no calls are received in the time   
  11653.          specified then the caller may log back on. 
  11654.  
  11655.          Field   two  is the access  level  that  allows  callers   to    
  11656.          bypass  the laston feature. Used  to  allow  co-sysops,  area    
  11657.          moderators, paying customers, etc. to  log-on back-to-back. 
  11658.  
  11659.          The  time  compensation  system for  uploads  will  also  not   
  11660.          increase  the time for the CURRENT call on uploads. The  time   
  11661.          will be "banked" and can be used later that day. 
  11662.  
  11663.          Osiris SE         Technical Reference Manual        Page 191
  11664.  
  11665.          If this option is active and the same caller attempts to  log   
  11666.          back on,  I'll show,  if  it  exists,  the   text file called   
  11667.          "last_on.mmu/asc/ans."   You  can  briefly explain  that  you   
  11668.          don't   allow back-to-back  log-on and ask  the    caller  to   
  11669.          kindly   wait till someone else has had a chance to  call  or   
  11670.          until the in-activity time, field one, has elapsed. 
  11671.  
  11672.                               Mailer Combinations 
  11673.   
  11674.          I've tested Osiris  with  SEADOG,  FRONTDOOR,  DUTCHIE, ISIS,   
  11675.          TELCOM and  BINKLEY.   No problems  have cropped up  with any    
  11676.          of these mailers. 
  11677.                               Commit Dos Function
  11678.  
  11679.          Later  versions  of DOS  (3.30 and  later) have  an  extended    
  11680.          File  Flush Function that offers a secure method of  flushing   
  11681.          file  buffer before  closing a file.   If I detect   DOS  3.3   
  11682.          (or   a  later  version), I'll  enable  the  extended   flush   
  11683.          function and call it before closing any file.
  11684.  
  11685.                                  File Handles 
  11686.   
  11687.          If  I  detect DOS 3.30, or later versions,  I'll  extend  the   
  11688.          internal  file handle table to allow Osiris to have up to  40   
  11689.          files  open  at  one time.   This  is a safety   feature  and    
  11690.          Osiris doesn't require that many.   It is possible that I may   
  11691.          fail  to close  a  file. This isn't likely, but it does  give   
  11692.          me a little  safety margin.
  11693.  
  11694.                                 Color Optimizer
  11695.  
  11696.          Osiris has a color optimizer built into the MMU color display   
  11697.          system that can reduce the number of characters to the screen   
  11698.          and com port by 38 to 40 percent, depending on colors used.
  11699.  
  11700.          COMPILED  MMU  files will be optimized, RAW  ANSI   will   be   
  11701.          displayed  AS  IS without being optimized or altered  in  any   
  11702.          way.
  11703.  
  11704.          Most,  if  not ALL, the internal colors within  Osiris   will   
  11705.          go thou the color optimizer.  
  11706.           
  11707.          Callers  should  see the "Jerky" movement (at  12/2400  baud)   
  11708.          associated with color changes all but disappear. 
  11709.  
  11710.  
  11711.  
  11712.  
  11713.  
  11714.  
  11715.  
  11716.  
  11717.  
  11718.          Osiris SE         Technical Reference Manual        Page 192
  11719.  
  11720.                            Osiris And Multiple Nodes
  11721.  
  11722.          As  indicated in the Software License Agreement,  any  multi-  
  11723.          line  version of Osiris must be used "on  multiple  computers   
  11724.          that  are  connected  by direct cable  to  the  same  network   
  11725.          server."  It is not licensed for use at multiple locations. 
  11726.   
  11727.          Any  questions  regarding  your  rights  under  the  Software   
  11728.          License Agreement should be directed to me for clarification. 
  11729.   
  11730.                                       Overview 
  11731.   
  11732.               Those  installing the multi-line version for  the  first   
  11733.               time,  as  well as those upgrading  from  a  single-line   
  11734.               version, should first set up a single line system. Don't   
  11735.               attempt to setup multiple lines right off the bat. 
  11736.   
  11737.                                     How It Works 
  11738.   
  11739.               When writing a multi-line BBS system there are two  ways   
  11740.               of  talking to more than one communication port at  the   
  11741.               same time.   
  11742.   
  11743.               The first makes use of "internal program multi-tasking."
  11744.  
  11745.               A single PC/AT handles the port addressing for all lines   
  11746.               and  internally  directs the program  responses  to  the   
  11747.               ports. This type of setup needing only the one computer,   
  11748.               but  is  limited  in that it  can't  perform  activities    
  11749.               outside the program or DOS shell support. 
  11750.  
  11751.               It is not possible to run doors, external protocols,  or   
  11752.               any other program as a sub-process. 
  11753.  
  11754.               The  second  method  loads a separate copy  of  the  BBS   
  11755.               program  into memory for each line or node.  This  setup   
  11756.               allows  an individual node to perform whatever  activity   
  11757.               or BBS maintenance event it desires, while allowing  the   
  11758.               remaining lines to perform independent activity.  
  11759.  
  11760.               The disadvantage is the extra memory required for multi-  
  11761.               tasking  software  or additional  hardware  for  network   
  11762.               operation.  
  11763.  
  11764.               I use the second method because it is REQUIRED for doors   
  11765.               and  external  file  transfer  protocols.  This,  by  no   
  11766.               stretch  of the imagination, means that Osiris,  or  any   
  11767.               program,  can  just leave everything up  to  the  multi-  
  11768.               tasker  or network software. That simply would not  work   
  11769.               and  your  hard  drive would end up a  mass  of  mangled   
  11770.               files. 
  11771.  
  11772.  
  11773.          Osiris SE         Technical Reference Manual        Page 193
  11774.  
  11775.               I'll  not  get into the specifics of what  Osiris  does,   
  11776.               most  of it is pretty technical, just don't  attempt  to   
  11777.               run  multiple copies of any program that  updates  files   
  11778.               unless that program SPECIFICALLY says it can handle it. 
  11779.  
  11780.                                  Hardware/Software 
  11781.   
  11782.               In  the following discussion the term  "multi-line"   is   
  11783.               the same as "multi-node."
  11784.  
  11785.               Likewise,  both a "line" and a "node" refer to a  single   
  11786.               Osiris  session  connected to a single modem  and  phone   
  11787.               line. 
  11788.   
  11789.               I've designed Osiris to operate in single line mode on a   
  11790.               single PC system, or in multi-line mode in any of  three   
  11791.               general configurations: 
  11792.   
  11793.                                    Local Area Networks
  11794.  
  11795.                    I've  included support for file and record  locking   
  11796.                    under  Novell,  3-COM, Banyan  Vines,  PC-MOS  386,   
  11797.                    Network OS, LANtastic, and any networks that  truly   
  11798.                    support  DOS 3.x SHARE.  Keep in mind that  several   
  11799.                    peer-to-peer  networks claim SHARE support, but  do   
  11800.                    not actually have it!  
  11801.  
  11802.                    In a LAN environment, each Osiris line operates  on   
  11803.                    a  separate computer connected to the other PCs  or   
  11804.                    ATs via network cable.  Each line runs its own copy   
  11805.                    of Osiris which is loaded from server's hard  disk.    
  11806.                    A  "server" in this context is used to  define  any   
  11807.                    computer  in a LAN setting that allows sharing  any   
  11808.                    of its peripherals such as hard disks, printers  or   
  11809.                    other devices.  
  11810.  
  11811.                    Some  network  configurations  only  allow  sharing   
  11812.                    programs located on a "dedicated server," one  that   
  11813.                    only  performs  LAN management  functions.   Others   
  11814.                    enable  sharing  of disk devices located  in  other   
  11815.                    workstations and are normally referred to as  peer-  
  11816.                    to-peer  networks.   In  a  network  which   allows   
  11817.                    multiple  "servers," the server computers can  also   
  11818.                    be used as a workstation for an Osiris node.   Each   
  11819.                    workstation  running Osiris is assigned a  separate   
  11820.                    and unique Node ID Number. 
  11821.   
  11822.                    Regardless  of the network used, only one  copy  of    
  11823.                    Osiris needs to be kept on the disk.  This copy  is   
  11824.                    available  to  each workstation  running  a  Osiris   
  11825.                    node.  All workstation nodes may update and  access   
  11826.                    a common message, file, and user databases.
  11827.  
  11828.          Osiris SE         Technical Reference Manual        Page 194
  11829.   
  11830.                                     Slave Card System
  11831.  
  11832.                    This setup requires an AT or clone and a slave card   
  11833.                    such  as  Alloy's PC-Slave, which is  available  in   
  11834.                    8088  (NEC V-20) and 80286 versions.  A slave  card   
  11835.                    usually  contains  a CPU (8088/V-20, or  80286),  a   
  11836.                    serial  port, a keyboard port, and a monitor  port.    
  11837.                    Each  slave card is actually a PC on a  card  which   
  11838.                    interacts with and shares the other peripherals  in   
  11839.                    the PC, including the hard disk.  
  11840.  
  11841.                    In brief, a slave card environment is one in  which   
  11842.                    a single machine adds one or more slave cards  with   
  11843.                    a  modem  and phone line connected  to  each  slave   
  11844.                    card.  Osiris is loaded in the memory of each  card   
  11845.                    just as if it was a separate PC system, and it uses   
  11846.                    the  shared  hard  disk  of  the  main  system  for   
  11847.                    storage.   Some slave systems allow viewing  access   
  11848.                    to  each slave PC environment via the  main  system   
  11849.                    keyboard and screen.  The cost factor in this setup   
  11850.                    can approach or exceed the LAN setup, depending  on   
  11851.                    the network type and PC cost. 
  11852.   
  11853.                    A  spin-off  on the slave card environment  is  the   
  11854.                    multi-PC card from CUBIX.  It installs in a  Novell   
  11855.                    network  server  and operates 2  workstations  from   
  11856.                    within the network server. 
  11857.  
  11858.                                         Desqview
  11859.  
  11860.                    For  those  interested  in  running  only  2-3   or   
  11861.                    possibly   4  nodes,  it  can  done  on  a   single   
  11862.                    80286/80386 system under DESQview, a  multi-tasking   
  11863.                    operating  environment available  from  Quarterdeck   
  11864.                    Office  Systems, 150 Pico Blvd., Santa  Monica,  CA    
  11865.                    90405,   (213)  392-9701.  Although very  fast  386   
  11866.                    combinations may be able to run 4 or 5 nodes,  I've   
  11867.                    found that performance may suffer significantly  on   
  11868.                    slower  systems  when  more  than  2  serial   port   
  11869.                    applications.   I  only  recommend  2  nodes  under   
  11870.                    DESQVIEW,  unless you are prepared to upgrade  your   
  11871.                    serial port UART chips. 
  11872.   
  11873.                    A DESQview setup involves purchasing DESQview  ver.   
  11874.                    2.25 or above from Quarterdeck and installing it on   
  11875.                    your  286/386 system.  Earlier  versions  will  not   
  11876.                    operate well with multiple serial applications  and   
  11877.                    are  not  recommended.   To  establish  2  DESQview   
  11878.                    applications  you  will  need  at  least  512K   of   
  11879.                    Expanded memory. Make certain the memory board  you   
  11880.                    purchase  is  fully compatible  with  the  DESQview   
  11881.                    memory   manager  -  check  with  Quarterdeck   for   
  11882.                    details.   
  11883.          Osiris SE         Technical Reference Manual        Page 195
  11884.  
  11885.                    You need memory which meets the specifications  for   
  11886.                    either AST's EEMS version 3.2 or LIM 4.0.  
  11887.                     
  11888.                                            Caution
  11889.  
  11890.                         The continual switching back and forth between   
  11891.                         the  "real"  and "protected" mode of  CPU  can   
  11892.                         result in lost interrupts and system  lock-ups   
  11893.                         makes   using  EXTENDED  memory   to   emulate   
  11894.                         EXPANDED unreliable.
  11895.  
  11896.                         I do not recommend extended memory use for any   
  11897.                         purpose,   even  extended  memory   which   is   
  11898.                         "converted" to EMS memory by use of a software   
  11899.                         driver.   
  11900.   
  11901.                    This  type of multiple line set up is the only  one   
  11902.                    in which the performance of the BBS program may  be   
  11903.                    hindered,  because of time-slicing.   By  contrast,   
  11904.                    both   LAN  and  slave  cards  offer  almost   full   
  11905.                    throughput. 
  11906.  
  11907.                    The   number  of  nodes  actually  possible   under   
  11908.                    DESQview   will   depend  on   several   variables,   
  11909.                    including the speed of the microprocessor &  clock,   
  11910.                    the baud rates of the connections, and the speed of   
  11911.                    the hard disk.
  11912.  
  11913.                    The memory requirements for Osiris  operating under   
  11914.                    DESQview  is  about 330K - 350K for  each  copy  of   
  11915.                    Osiris.  This means that the total memory  required   
  11916.                    easily exceeds the 640K base memory area.  A system   
  11917.                    with 512K  of expanded memory will operate 2 lines.  
  11918.  
  11919.                    Although  my recommendation is for no more  than  2   
  11920.                    nodes  under  DESQview, there are  some  situations   
  11921.                    which  may allow additional nodes to be added.   If    
  11922.                    a   fast 286 or 386 CPU is used, you may find  that   
  11923.                    an additional node or two can be added with  little   
  11924.                    or no impact on performance.  
  11925.  
  11926.                    If  the majority of your callers will be  operating   
  11927.                    at   2400  baud,  additional  nodes  may  also   be   
  11928.                    possible.   Testing your set up is the only  method   
  11929.                    of determining the actual limits. 
  11930.  
  11931.  
  11932.  
  11933.  
  11934.  
  11935.  
  11936.  
  11937.  
  11938.          Osiris SE         Technical Reference Manual        Page 196
  11939.  
  11940.                                        Novell 
  11941.   
  11942.               Novell offers several versions of NetWare including  the   
  11943.               entry  level  system  ELS Level I,  ELS  Level  II,  and   
  11944.               Advanced  NetWare.  ELS I is limited  to  4  workstation   
  11945.               connections,  including a non-dedicated server that  can   
  11946.               operate  as  a  workstation.  ELS II  is  limited  to  8   
  11947.               workstation  connections and also uses  a  non-dedicated   
  11948.               server that doubles as a workstation.  
  11949.  
  11950.               ESL,  Level  I and Level II,  are  priced  significantly   
  11951.               lower  than Advanced NetWare which will allow up to  250   
  11952.               Osiris nodes.  
  11953.   
  11954.               It's  been reported that Advanced NetWare ver.  2.15  is   
  11955.               capable  of operating two nodes on a single  workstation   
  11956.               using  DESQview.   This  type  of  configuration  allows   
  11957.               you  to  operate  six nodes using 3  AT's  connected  as   
  11958.               Novell workstations, with each AT running 2 BBS lines.  
  11959.  
  11960.                                Peer-To-Peer Networks 
  11961.   
  11962.               This section reviews generic peer-to-peer networks using   
  11963.               LANtastic   as   an  example.    From   an   operational   
  11964.               viewpoint,  these networks will function much  like  any   
  11965.               other.   The primary difference is the use  of  multiple   
  11966.               "servers."  If multiple workstations are used as servers   
  11967.               for   various  system  resources,  the  same  server   /   
  11968.               workstations  may also be used as a Osiris  node.   Each   
  11969.               node must still be given a unique Node ID.                          
  11970.  
  11971.                                         Lantastic 
  11972.   
  11973.                    This  network operates Osiris well when  configured   
  11974.                    properly.  The  following network  parameters  have   
  11975.                    been  found  to increase  reliability  and  improve   
  11976.                    operation: 
  11977.   
  11978.                    DOS ver. 3.1 or 3.3 are recommended, version 3.2 is   
  11979.                    not fully compatible with the network communication   
  11980.                    interfaces.   The  SHARE command is  not  necessary   
  11981.                    since LANtastic emulates SHARE in the LANBIOS.  
  11982.  
  11983.                    For maximum performance, I recommend using a  small   
  11984.                    disk cache system with LANtastic. 
  11985.  
  11986.  
  11987.  
  11988.  
  11989.  
  11990.  
  11991.  
  11992.  
  11993.          Osiris SE         Technical Reference Manual        Page 197
  11994.  
  11995.                                     Slave Cards 
  11996.   
  11997.               This  follows the same Osiris software setup  procedures   
  11998.               as  a  network.  The only real difference here  is  that   
  11999.               SHARE must be loaded in EACH SLAVE ENVIRONMENT.  
  12000.   
  12001.               Alloys' PC Slave system is established to act much  like   
  12002.               a  network  with  no cables  connecting  the  individual   
  12003.               workstations.   Instead, each workstation is actually  a   
  12004.               card installed into the bus on the "server."   
  12005.   
  12006.               Alloys'  own  network  software  is  NTNX.   Setup   the   
  12007.               hardware and software according to the instructions from   
  12008.               Alloy.   If  the  slave  cards  are  populated   with  1   
  12009.               megabyte of memory, I recommend allocating 512K for  the   
  12010.               slave  partition and the remaining 512K as a system disk   
  12011.               cache within NTNX. 
  12012.   
  12013.               The  Osiris  configurations  on  the  slave  cards   are   
  12014.               established  on  the server hard disk exactly  like  any   
  12015.               other network setup. 
  12016.  
  12017.               The individual slave cards may be accessed by connecting   
  12018.               directly   to  the  cards  via  terminals   (monitor   &   
  12019.               keyboard).   Alloy cards also operate with  the  utility   
  12020.               program NXSCAN to control slave cards from the server in   
  12021.               real time without using additional terminals.  
  12022.  
  12023.               The  NTNX  software includes a utility to  monitor  each   
  12024.               slave  from  the  server, although  interaction  is  not   
  12025.               possible.    
  12026.   
  12027.               When operating a slave system, all Osiris sessions  MUST   
  12028.               answer  the phone by Auto-Answer.  Alloy uses  the  ring   
  12029.               detect  line,  pin 22, to reboot the  individual  slaves   
  12030.               from  the server.   
  12031.                                       Desqview 
  12032.   
  12033.               DESQview  should be set up with two windows  and  follow   
  12034.               the  same  procedures  as  a  network.   The  only  real   
  12035.               difference  here is that SHARE must  be  loaded   before   
  12036.               starting the DESQview program with DV or XDV.  There  is   
  12037.               no need to load SHARE in each DV window.  
  12038.   
  12039.               Osiris is DESQview "aware" and will recognize when it is   
  12040.               operating  in a DV environment.  When the TX buffer  can   
  12041.               no  longer  take  data, I'll slice  time  to  the  other   
  12042.               partitions.  The same holds true when Osiris is  waiting   
  12043.               for  input. If no input is available, I'll slice time to   
  12044.               the other partitions.
  12045.  
  12046.  
  12047.  
  12048.          Osiris SE         Technical Reference Manual        Page 198
  12049.  
  12050.  
  12051.               I'll  only  scan  the local key board  every  30th  time   
  12052.               though  the input loop. This degreases the drain on  the   
  12053.               CPU and gives  other  partitions  more  time.  If you're   
  12054.               attempting  to  run more than 2 nodes, it  is  suggested   
  12055.               that  you  increase this to about 60. Do not go  to  far   
  12056.               over this or carrier monitoring could be affected.
  12057.  
  12058.               I  recommend using  DESQview version 2.25 and  above.  I   
  12059.               also  strongly suggest using the 16550A UART chip as  a   
  12060.               replacement  for the 8250 or 16450 found in most  RS-232   
  12061.               boards.   Using  this chip becomes even  more  important   
  12062.               when  more  than two Osiris nodes are  configured  on  a   
  12063.               single machine.  
  12064.  
  12065.               This  chip is inexpensive and is available from  several   
  12066.               sources  at a nominal cost, including Arrow  Electronics   
  12067.               at 1-800-932-7769. 
  12068.   
  12069.               The Initial setup of DESQview (SETUP.BAT) allows setting   
  12070.               performance parameters which affect the processing  time   
  12071.               allocated  to foreground and background  tasks.   You'll   
  12072.               want to experiment with these settings, but should begin   
  12073.               with  each  task  receiving  equal  time  if  both   are   
  12074.               operating an Osiris  node.  Start with 3 ticks for  each   
  12075.               node.    If  you're  operating  a  single  BBS  in   the   
  12076.               background   while  using  the  foreground   for   other   
  12077.               activities  such  as word processing,  you  then  should   
  12078.               allow the background task more time by a factor of about   
  12079.               3. 
  12080.   
  12081.               The  following shows the major setup parameters and  the   
  12082.               proper settings for a 2 line BBS under DESQview. 
  12083.   
  12084.               The important parameters here begin with the second half   
  12085.               of the page.  Optimize communications must be set to "Y"   
  12086.               to operate high speed modems reliably.  In addition, you   
  12087.               should  load the Osiris node that uses the highest  baud   
  12088.               rate first.  Doing so prevents the 0-640K area of memory   
  12089.               from  becoming fragmented since communications  programs   
  12090.               are never swapped out, and guarantees the best  transfer   
  12091.               speeds.   In  addition, if an Enhanced  Expanded  Memory   
  12092.               board (EEMS) is being used DESQview will make use of its   
  12093.               "instantaneous" mapping registers for the first  program   
  12094.               while  assigning  all  other  programs  to  the   slower   
  12095.               registers  with  mapping overhead.   Remember  that  the   
  12096.               processing  power of your PC ultimately limits how  many   
  12097.               high   speed   communications  programs   may   be   run   
  12098.               simultaneously without dropping characters.  
  12099.  
  12100.  
  12101.  
  12102.  
  12103.          Osiris SE         Technical Reference Manual        Page 199
  12104.   
  12105.               Swapping  programs  may be set to "Y",  although  Osiris   
  12106.               should  never be swapped out of memory.  This  parameter   
  12107.               allows  other programs this option.  Printer  contention   
  12108.               should  not be managed since DV will suspend  a  program   
  12109.               that attempts to print if another is already printing.   
  12110.   
  12111.               I recommend setting DV to indicate that Osiris does  NOT   
  12112.               write directly to the screen (even though it does). 
  12113.           
  12114.               Fine tuning DESQview parameters WILL be helpful.
  12115.  
  12116.               To  ensure that you never get a Share Violation  message   
  12117.               asking  for  "Retry, Abort, or Fail," the  DOS  critical   
  12118.               interrupt will be taken before any OPEN File request  to   
  12119.               prevent  such  message  or  error  from   halting    the   
  12120.               program.  The normal interrupt vector will  be  restored   
  12121.               following the open call.
  12122.  
  12123.                                    Exception 13 Errors
  12124.  
  12125.                    Desqview  can, at times, come up with an  exception   
  12126.                    13  error.  No  one really KNOWS  what  this  error   
  12127.                    message means. If they do, they don't want to share   
  12128.                    that information with anyone. 
  12129.  
  12130.                    It also only shows up on SOME systems while  others   
  12131.                    NEVER see it. Which indicates that it has something   
  12132.                    to do with the way your system is configured.
  12133.  
  12134.                    Someone DID figure out that changing two parameters   
  12135.                    within  Desqview "SEEMS" to make the error  message   
  12136.                    go away.
  12137.  
  12138.                    Try changing the COMMON MEMORY from 17K to 20K  and   
  12139.                    change  the DOS BUFFERS FOR EMS to 5. You may  need   
  12140.                    to  go higher on one or both of these settings  but   
  12141.                    try the 20K and 5 first.
  12142.  
  12143.                               Very Important Read This
  12144.  
  12145.               Despite the method of multitasking, you will NEED to set   
  12146.               your EXE, COM, OVL (overlay), and OVR files to READ ONLY   
  12147.               to prevent DOS SHARE violations.  
  12148.   
  12149.               When DOS loads an EXE or COM, it opens it in  READ/WRITE   
  12150.               mode.  If  two or more nodes attempt to  LOAD  the  same   
  12151.               program,  a protocol driver or archiver, you can  get  a   
  12152.               share  violation.  Since this is external to  Osiris,  I   
  12153.               cannot trap it.
  12154.  
  12155.               I  have included a program in the package, setlock.exe,   
  12156.               that  allows you to MASS set, in the current  directory,   
  12157.               EXE, COM, OVL, and OVR files to READ ONLY. 
  12158.          Osiris SE         Technical Reference Manual        Page 200
  12159.  
  12160.               The  program is easy to use. Log into the directory  and   
  12161.               type  SETLOCK  /L <ENTER>. This sets all the  COM,  EXE,   
  12162.               OVL,  and  OVR files in the current  directory  to  READ   
  12163.               ONLY.
  12164.  
  12165.               If you need to set them back to READ/WRITE, to delete or   
  12166.               replace one of the programs, log into the directory  and   
  12167.               type SETLOCK /U <ENTER>. This will set all the COM, EXE,   
  12168.               OVL,   and  OVR  files  in  the  current  directory   to   
  12169.               READ/WRITE  mode and you can make the required  changes.   
  12170.               But, don't forget to change them back to READ ONLY.
  12171.  
  12172.                                         Help
  12173.  
  12174.               The  VAST  number of methods that CAN be  used  and  the   
  12175.               differences  that can exist between individual  set  ups   
  12176.               forces  me   to  limit Technical  support  to  only  the    
  12177.               OSIRIS  interface.
  12178.  
  12179.               I cannot offer setup, installation, operational   help,    
  12180.               or    maintenance  support for other  produces  such  as   
  12181.               Desqview, Novell, Lantastic, etc. 
  12182.  
  12183.                    Games Or Doors And Other External Program
  12184.  
  12185.          There  is no standardized method of setting up  for  external   
  12186.          programs,  which  isn't  surprising.   The  Capitol  PC  User   
  12187.          Group's  program,  RBBS-PC,  handles  this  feature  using  a   
  12188.          specific format, which is unique to RBBS-PC.  In fact,  RBBS-  
  12189.          PC uses several different formats, depending on what  version   
  12190.          of the software you happen to be using.
  12191.  
  12192.          PCboard  is another prime example. It uses several  different   
  12193.          door  formats depending on what version of the  software  you   
  12194.          are using. 
  12195.           
  12196.          Other  BBS  programs  use similar,  but  somewhat  different,   
  12197.          methods of passing parameters to external programs.  In fact,   
  12198.          there  are  so many different ,  incompatible,  formats  door   
  12199.          authors  have a hell of a time picking out the one they  want   
  12200.          to use. 
  12201.  
  12202.          You'll find a lot of door programs for Pcboard and RBBS.  Not   
  12203.          because either is considered to be an excellent BBS  package,   
  12204.          they're  not.  They aren't BAD packages, just  not  excellent   
  12205.          packages. It is because they have been around a LONG time and   
  12206.          most  DOOR authors have also been around a long time and they   
  12207.          are familiar with the Pcboard or RBBS layout.
  12208.  
  12209.          I've joined the ranks by adding my own specific format. there   
  12210.          are  programs  available,  Qkdoor and Doormaster  to  name  a   
  12211.          couple of the more popular ones, that converts the Outxxx.Qbs   
  12212.          file to almost any format. 
  12213.          Osiris SE         Technical Reference Manual        Page 201
  12214.  
  12215.                              Qkdoor/Doormaster Approach
  12216.  
  12217.               Several  BBS'  packages have internal door  support  for   
  12218.               different  formats, Osiris does, but that is not  really   
  12219.               the best approach.
  12220.  
  12221.               Door  formats  can change rapidly, as RBBS  and  PCboard   
  12222.               have  demonstrated  all to well. And, new  Door  formats   
  12223.               come out almost monthly.
  12224.  
  12225.               If  you must rely on the door system built into the  BBS   
  12226.               package,  you  can be left out in the cold when  a  door   
  12227.               format  changes or a new one comes out. You'll  have  to   
  12228.               wait for a new version of the BBS software, which  could   
  12229.               take a year or two.
  12230.  
  12231.               Using  external DOOR programs, like  QKDOOR,  eliminates   
  12232.               that  problem.  The authors of Door  programs  generally   
  12233.               keep  up to date on the current DOOR control  files  and   
  12234.               when  one  changes  or a new one  comes  out,  they  can   
  12235.               quickly add it to a new version of their software.
  12236.  
  12237.               There  isn't  any  real advantage  to  using  the   door   
  12238.               control  file  system built into the  BBS  package.  You   
  12239.               still  have the same number of commands and steps to  go   
  12240.               though. You'll either tell me  or the Door program.
  12241.  
  12242.                                     Games
  12243.  
  12244.          With Osiris, you're not locked into having to set-up games in   
  12245.          any  specific fashion or location. You can install a game  or   
  12246.          game system any place.
  12247.  
  12248.          The  most obvious place to install a game sub-system  is  off   
  12249.          the main menu using one of the MAINx.PRG files.
  12250.  
  12251.          You'll  generally set-up the game sub-system using SPL/I  and   
  12252.          shelling to batch files, or directly to the program once  you   
  12253.          have become prolific with SPL/I.
  12254.  
  12255.          You do not have to worry about having enough memory. VMS will   
  12256.          give  you just as much memory as your system had  before  you   
  12257.          called  Osiris. Usually this will be at least 512K.  More  or   
  12258.          less,  depending on what you had to start with. I  have  622K   
  12259.          FREE when I shell to games.
  12260.  
  12261.                             Installing A Game Sub-System
  12262.  
  12263.               For this tutorial, I'll use the following seven games:
  12264.  
  12265.  
  12266.  
  12267.  
  12268.          Osiris SE         Technical Reference Manual        Page 202
  12269.  
  12270.               Scrabble 
  12271.               Fishing 
  12272.               Acey Deucey 
  12273.               Pit 
  12274.               Galactic WarZone 
  12275.               Tetris 
  12276.               Yankee Trader
  12277.  
  12278.               What  I'm about to show you is very simplistic in nature   
  12279.               and  most  certainly  not the only way to do things. You   
  12280.               can   get  VERY creative with SPL/I and I've  seen  some  
  12281.               very unique  game  systems  that were works of art  with  
  12282.               multiple   menu   systems,   windows,  kaleidoscopes  of  
  12283.               color and form.
  12284.  
  12285.                                 Step 1, Setting The Menu
  12286.  
  12287.                    The  first  order  of business  is  the  menu.  The   
  12288.                    callers have to have some method of selecting which   
  12289.                    game they want to play.
  12290.  
  12291.                    There are two methods of designing a game menu. The   
  12292.                    first  is using a draw program, like "THEDRAW,"  to   
  12293.                    draw out the menu. This is the best approach  since   
  12294.                    it is WYSIWYG and you don't get any surprises  when   
  12295.                    you display it for the first time.
  12296.  
  12297.                    The  second  method is "BY HAND." You  use  a  text   
  12298.                    editor and lay out the menu and add the SPL/I color   
  12299.                    commands  by hand. Some folks like  this  approach,   
  12300.                    but  I've found that  you almost always have to  go   
  12301.                    back  and readjust your menu because things  seldom   
  12302.                    line up correctly the first or even the second time   
  12303.                    around.
  12304.  
  12305.                    Let's assume you selected the first method and  you   
  12306.                    have drawn a simple menu using light blue,  yellow,   
  12307.                    gray,  bright  white, and light green  colors.  You   
  12308.                    saved the menu using THEDRAW command clear  screen,   
  12309.                    no  limit  on line length, and the  file  name  was   
  12310.                    games.ans.
  12311.  
  12312.                    You've  now got the basic game menu, but it  is  in   
  12313.                    ANSI  format and we want to get it into MMU  format   
  12314.                    so   ALL  callers  can  use  it,  not  just   those   
  12315.                    supporting  ANSI. Compile   the  "GAMES.ANS"   file   
  12316.                    using    the    MMU   compiler,  MMU.EXE.  Use  the  
  12317.                    command line:
  12318.  
  12319.                    MMU GAMES.ANS /A /F
  12320.  
  12321.                    Slash A tells the MMU compiler the file "GAMES.ANS"   
  12322.                    is an ANSI file.  
  12323.          Osiris SE         Technical Reference Manual        Page 203
  12324.  
  12325.                    You'll  end up with a file called "GAMES.MMU,"  the   
  12326.                    original "GAMES.ANS" will not be altered.
  12327.  
  12328.                    It  might  look something like this,  minus  color,   
  12329.                    when displayed:
  12330.  
  12331.                                    Game Menu
  12332.  
  12333.                                   A) Scrabble 
  12334.                                   B) Fishing 
  12335.                                   C) Acey Deucey 
  12336.                                   D) Galactic WarZone 
  12337.                                   E) Tetris 
  12338.                                   F) Yankee Trader
  12339.  
  12340.                                   X) Quit To Main Menu
  12341.  
  12342.                                   Selection ?  
  12343.                
  12344.                    Not  fancy, but adequate. You can get as  fancy  as   
  12345.                    you like when you do yours.
  12346.  
  12347.                    Now  that  we have our menu, we have  to  setup  an   
  12348.                    SPL/I command file to display it, get the selection   
  12349.                    from  the  caller, and execute the game  they  have   
  12350.                    selected.
  12351.  
  12352.                    Lets  call the command file, GAMES.SCR, SCR  stands   
  12353.                    for SOURCE.
  12354.  
  12355.                    Since  we're  going to get a menu option  from  the   
  12356.                    caller, we'll need to define a variable to HOLD the   
  12357.                    selection. Lets use 'CH', CH short for CHARACTER.
  12358.  
  12359.                    _define_var(ch,character);
  12360.  
  12361.                    The  next  step is a controlled loop  to  HOLD  the   
  12362.                    caller  in the game program until WE decide to  let   
  12363.                    him out, when he selects the X option.
  12364.  
  12365.                    We'll need a control variable that can be used  for   
  12366.                    a  test  expression, lets use NOT_DONE.  That  name   
  12367.                    tells us what the it does just by looking at it.
  12368.  
  12369.                    _Define_var(Not_Done, Integer);
  12370.  
  12371.                    We  also want to set NOT_DONE to some  value  other   
  12372.                    than 0 so it will return TRUE when tested.
  12373.  
  12374.                    _Assign(Not_done,1);
  12375.  
  12376.  
  12377.  
  12378.          Osiris SE         Technical Reference Manual        Page 204
  12379.  
  12380.  
  12381.                    The  loop  itself will be a WHILE  loop  and  looks   
  12382.                    something like
  12383.  
  12384.                    _while(not_done);
  12385.  
  12386.                    _wend;
  12387.  
  12388.  
  12389.                    Lets   put  everything  we've  defined,   so   far,   
  12390.                    together:
  12391.  
  12392.  
  12393.                    _define_var(ch,character); 
  12394.                    _define_var(not_done,integer); 
  12395.                    _assign(not_done,1);
  12396.  
  12397.                    _while(not_done);
  12398.  
  12399.                    _wend;
  12400.  
  12401.                    _mend;
  12402.  
  12403.                    That's  our basic SPL/I game command file. It  will   
  12404.                    continue  to LOOP until the variable  NOT_DONE  has   
  12405.                    something  in it other than 0. As soon as  NOT_DONE   
  12406.                    has 0 in it, it'll fail the test and the loop  will   
  12407.                    terminate.
  12408.  
  12409.                    The FIRST thing we want to do inside the LOOP is to   
  12410.                    clear the screen and display our menu so:
  12411.  
  12412.  
  12413.                    _CLS(); 
  12414.                    _DISPLAY_TEXT("C:\osiris\games.mmu");
  12415.  
  12416.                    I'll  assume you placed the games.mmu file  in  the   
  12417.                    directory  c:\osiris. You can put it anywhere   you   
  12418.                    want as long as you include the full drive and path   
  12419.                    to the file.
  12420.  
  12421.                    The next step is to stop and get the selection from   
  12422.                    the  caller using the _getc(ch,1) statement. The  1   
  12423.                    tells me to convert the selection to UPPERCASE.  In   
  12424.                    other  words, if you typed in 'a', I'll convert  it   
  12425.                    to  'A'. That will make testing a little easier  to   
  12426.                    do.
  12427.  
  12428.  
  12429.  
  12430.  
  12431.  
  12432.  
  12433.          Osiris SE         Technical Reference Manual        Page 205
  12434.  
  12435.  
  12436.                    If  we put it all together, we now  have  something   
  12437.                    like:
  12438.  
  12439.                    _define_var(ch,character); 
  12440.                    _define_var(not_done,integer); 
  12441.                    _assign(not_done,1);
  12442.  
  12443.                    _while(not_done);
  12444.  
  12445.                      _CLS(); 
  12446.                      _DISPLAY_TEXT("C:\osiris\games.mmu"); 
  12447.                      _getc(ch,1);
  12448.  
  12449.  
  12450.                    _wend;
  12451.  
  12452.                    _mend;
  12453.  
  12454.  
  12455.                    The  way the program's currently set-up, you  would   
  12456.                    go  into  an  infinite  loop;  the  menu  would  be   
  12457.                    displayed  and  you'd  get  a  selection  from  the   
  12458.                    caller; over, and over, and over until you  finally   
  12459.                    have to hang-up to get out of it. So we have to add   
  12460.                    some  _IF statements to determine WHAT  the  caller   
  12461.                    selected and what action we want to TAKE.
  12462.  
  12463.  
  12464.  
  12465.  
  12466.  
  12467.  
  12468.  
  12469.  
  12470.  
  12471.  
  12472.  
  12473.  
  12474.  
  12475.  
  12476.  
  12477.  
  12478.  
  12479.  
  12480.  
  12481.  
  12482.  
  12483.  
  12484.  
  12485.  
  12486.  
  12487.  
  12488.          Osiris SE         Technical Reference Manual        Page 206
  12489.  
  12490.                                 Processing The Selection
  12491.  
  12492.                    Since we have seven possible selections, we'll need   
  12493.                    seven IF statements to test what we have. Lets  put   
  12494.                    those in:
  12495.  
  12496.                    _define_var(ch,character); 
  12497.                    _define_var(not_done,integer); 
  12498.                    _assign(not_done,1);
  12499.  
  12500.                    _while(not_done);
  12501.  
  12502.                      _CLS(); 
  12503.                      _DISPLAY_TEXT("C:\osiris\games.mmu"); 
  12504.                      _getc(ch,1); 
  12505.                    _if(ch = 'A');
  12506.  
  12507.                    _endif;
  12508.  
  12509.                    _if(ch = 'B');
  12510.  
  12511.                    _endif;
  12512.  
  12513.                    _if(ch = 'C');
  12514.  
  12515.                    _endif;
  12516.  
  12517.                    _if(ch = 'D');
  12518.  
  12519.                    _endif;
  12520.  
  12521.                    _if(ch = 'E');
  12522.  
  12523.                    _endif;
  12524.  
  12525.                    _if(ch = 'F');
  12526.  
  12527.                    _endif;
  12528.  
  12529.                    _if(ch = 'X');
  12530.  
  12531.                    _endif;
  12532.  
  12533.                    _wend;
  12534.  
  12535.                    _mend;
  12536.  
  12537.  
  12538.  
  12539.  
  12540.  
  12541.  
  12542.  
  12543.          Osiris SE         Technical Reference Manual        Page 207
  12544.  
  12545.                    You'll notice that I used UPPERCASE letters  inside   
  12546.                    the  _IF  statements. CASE DOES make  a  difference   
  12547.                    and 'A'  is NOT the same as 'a'. But, I used the  1   
  12548.                    in _getc(ch,1), so I don't have to worry about 'a'.   
  12549.                    1 means I'll never get a lower case character.
  12550.  
  12551.                    Now  that we have all the _if tests set-up, we  can   
  12552.                    go  in  and  do what we want to do  if  the  caller   
  12553.                    enters that  particular selection.
  12554.  
  12555.                    X is the most obvious one to start with and X means   
  12556.                    you want OUT of the menu. Since NOT_DONE is driving   
  12557.                    our LOOP all we have to do is set NO_DONE to 0  and   
  12558.                    the LOOP will terminate.
  12559.  
  12560.                    _CLEAR(NOT_DONE) will do that so :
  12561.  
  12562.                    _IF(ch = 'X');
  12563.  
  12564.                       _clear(not_done);
  12565.  
  12566.                    _ENDIF;
  12567.  
  12568.                    Before  we do any of the other _IF statements,  let   
  12569.                    me explain one of the commands we'll be using,  the   
  12570.                    execute statement. 
  12571.                                    
  12572.                    The  EXECUTE() statement tells me that you want  to   
  12573.                    execute  an  external  program.  Unlike  other  BBS   
  12574.                    programs  that exit with errorlevels,  Osiris  will   
  12575.                    remains in memory and uses the VMS manager to  free   
  12576.                    up  the  memory  needed  to  execute  the  external   
  12577.                    application. The VMS manager will use either EMS or   
  12578.                    your disk for memory segment swapping. 
  12579.  
  12580.                    For  the moment, I'm going to assume that  you  are   
  12581.                    going to use external batch files, Qkdoor to create   
  12582.                    the appropriate door file, and execute the external   
  12583.                    game. 
  12584.  
  12585.                    I would suggest beginners use this method since  it   
  12586.                    is  similar to the methods other BBS programs  use.   
  12587.                    We  can  get into other, more advanced,  methods  a   
  12588.                    little later on.
  12589.  
  12590.                    We'll also need to add another variable to hold any   
  12591.                    possible  return code although in this  case  there   
  12592.                    will  be none, but . . . execute() REQUIRES  us  to   
  12593.                    provide one so 
  12594.  
  12595.                    _define_var(rtcode,integer);
  12596.  
  12597.  
  12598.          Osiris SE         Technical Reference Manual        Page 208
  12599.                    
  12600.                    Lets  also  pretend  that you're  using  the  batch   
  12601.                    files, that's why there will be no return code:
  12602.  
  12603.                    Scab.bat 
  12604.                    Fishing.bat 
  12605.                    ACEY.bat 
  12606.                    galwar.bat 
  12607.                    Tetris.bat 
  12608.                    trader.bat
  12609.  
  12610.                    Our  program,  including  the  execute   statements   
  12611.                    should now look like: 
  12612.  
  12613.                    _define_var(ch,character); 
  12614.                    _define_var(not_done,integer); 
  12615.                    _define_var(rtcode,integer);
  12616.  
  12617.                    _assign(not_done,1);
  12618.  
  12619.                    _while(not_done); 
  12620.                      _CLS(); 
  12621.                      _DISPLAY_TEXT("C:\osiris\games.mmu"); 
  12622.                      _getc(ch,1); 
  12623.                    _if(ch = 'A'); 
  12624.                       _execute(0,"scab.bat",rtcode); 
  12625.                    _endif;
  12626.  
  12627.                    _if(ch = 'B'); 
  12628.                       _execute(0,"fishing.bat",rtcode); 
  12629.                    _endif;
  12630.  
  12631.                    _if(ch = 'C');
  12632.                      _execute(0,"acey.bat",rtcode); 
  12633.                    _endif; 
  12634.                    _if(ch = 'D'); 
  12635.                       _execute(0,"galwar.bat",rtcode); 
  12636.                    _endif; 
  12637.                    _if(ch = 'E'); 
  12638.                        _execute(0,"tetris.bat",rtcode); 
  12639.                    _endif; 
  12640.                    _if(ch = 'F'); 
  12641.                        _execute(0,"trader.bat",rtcode); 
  12642.                    _endif; 
  12643.                    _if(ch = 'X'); 
  12644.                      _clear(not_done); 
  12645.                    _endif;
  12646.  
  12647.                    _wend;
  12648.  
  12649.                    _mend;
  12650.  
  12651.  
  12652.  
  12653.          Osiris SE         Technical Reference Manual        Page 209
  12654.  
  12655.                    For  a more detailed explanation of  _execute,  see   
  12656.                    the sub-section on _execute() command.
  12657.  
  12658.                    That's IT! We now have a COMPLETE game system about   
  12659.                    ready to go on-line.
  12660.  
  12661.                                    Compiling Games.scr
  12662.  
  12663.                    The game program will have to be compiled with  the   
  12664.                    SPL/I  compiler before I can use it.  Assuming  you   
  12665.                    are  going  to use MAIN1.PRG, rename  GAMES.SCR  to   
  12666.                    MAIN1.SCR  and  compile  it  with  ITC  using   the   
  12667.                    following:
  12668.  
  12669.                    ITC main1
  12670.  
  12671.                    ITC  will,  if you made no typing  errors,  produce   
  12672.                    MAIN1.OBJ.  If  the compiler stops  with  an  error   
  12673.                    message, correct the error and recompile.
  12674.  
  12675.                    Assuming  you got a successful compile,  your  next   
  12676.                    step is to LINK the OBJ file to produce the runable   
  12677.                    program file. Use ITlink and the following command:
  12678.  
  12679.                    ITLINK MAIN1
  12680.  
  12681.                    MAIN1.PRG  would  then be  created  containing  the   
  12682.                    runable  SPL/I  code. Move MAIN1.PRG to  your  Text   
  12683.                    directory.
  12684.  
  12685.                           The Individual Game Batch Files
  12686.  
  12687.               Most games require some type of control file  containing   
  12688.               information  about  the com port, baud  rate,  and  user   
  12689.               information for the CURRENT caller.
  12690.  
  12691.               All  BBS systems provide door control files, but  rarely   
  12692.               are they compatible.
  12693.  
  12694.               The  game authors generally provide direct control  file   
  12695.               support for the BBS programs they're using.
  12696.  
  12697.               You have to translate, in most cases, the file I use  to   
  12698.               the  format the game understands. You don't have  to  do   
  12699.               this  manually. Several programs can take the  OUTxx.Qbs   
  12700.               file  and translate it to any number of formats.  Qkdoor   
  12701.               is widely used and we'll use it in these examples.
  12702.  
  12703.               In  our  sample batch, <EOF> indicates the  END  of  the   
  12704.               batch file and it's not actual PART of the file. <START>   
  12705.               indicates  the beginning of the batch  file.   Remember,   
  12706.               neither  <START> or <EOF> are parts of the actual  batch   
  12707.               file. 
  12708.          Osiris SE         Technical Reference Manual        Page 210
  12709.  
  12710.               I'm not going to do each and every batch file since they   
  12711.               are  all  basically alike. I will do two,  scab.bat  and   
  12712.               fish.bat,  which  should  be  enough  to  give  you  the   
  12713.               generally idea.
  12714.  
  12715.                                         Scab.bat
  12716.  
  12717.                    Scrabble,  selection A, can use an older format  of   
  12718.                    the  Osiris  control file which use  to  be  called   
  12719.                    extinfoX.qbs,   X  being  the  Node  number  you're   
  12720.                    using. The new format is OUTx.QBS with x being  the   
  12721.                    node number. Just copy it to the old file name, the   
  12722.                    part that scrabble uses is still the same.
  12723.  
  12724.                    <START> 
  12725.                    copy out1.qbs extinfo1.qbs 
  12726.                    scrabmn scrabble.cfg 
  12727.                    <EOF>
  12728.  
  12729.                                         Fish.bat
  12730.  
  12731.                    The second menu option was fishing.bat:
  12732.  
  12733.                    <START> 
  12734.                    qkdoor c:\osiris\OSSE1 c:\osiris\fish\QBBS 
  12735.                    cd fish 
  12736.                    FISHING 1 C:\Osiris\FISH 
  12737.                    <EOF>
  12738.  
  12739.                    The first line calls QKDOOR, passing the parameters    
  12740.                    it needs.
  12741.  
  12742.                                        Qkdoor Parameters
  12743.  
  12744.                         The first parameter, c:\osiris\OSSE1, gives it   
  12745.                         the full drive, path, and node number for  the   
  12746.                         file  Osiris  created. The  second  parameter,   
  12747.                         c:\osiris\fish\QBBS,  gives the  drive,  path,   
  12748.                         and TYPE of control file you want written. The   
  12749.                         program  you're going to run and control  file   
  12750.                         must be in the same directory. 
  12751.  
  12752.                         "QBBS"  tells  QKDOOR  to  write  a  QuickBBS'   
  12753.                         external  control  file in  the  sub-directory   
  12754.                         "C:\OSIRIS\FISH"
  12755.  
  12756.                         The Qkdoor.doc file gives a complete run  down   
  12757.                         of  available  Door control files  Qkdoor  can   
  12758.                         handle.  It  supports  most  of  the   popular   
  12759.                         formats.
  12760.  
  12761.  
  12762.  
  12763.          Osiris SE         Technical Reference Manual        Page 211
  12764.  
  12765.                         The   line  "FISHING  1   C:\Osiris\FISH"   is   
  12766.                         specific  to  the program you're  calling  and   
  12767.                         varies according to the special needs of  that   
  12768.                         program.
  12769.  
  12770.               You  don't  have  to worry about changing  back  to  the   
  12771.               Osiris  directory before exiting the batch file, I  save   
  12772.               the current drive and directory before calling the batch   
  12773.               files  or external programs and I'll restore you to  the   
  12774.               original, preshell, directory when you return.
  12775.  
  12776.                                Dorinfo1.def/Door.sys
  12777.  
  12778.               I  do  directly supports DorinfoX.Def and  Door.Sys  via   
  12779.               SPL/I command calls.
  12780.  
  12781.                                       Dorinfo1.def
  12782.  
  12783.                    If  you want to create the  DorinfoX.Def  directly,   
  12784.                    bypassing external Door programs, issue the command   
  12785.                    _dorinfo(path,program) replacing PATH with the full   
  12786.                    drive/path  to  the  sub-directory  you  want   the   
  12787.                    dorinfoX.def  file written in and PROGRAM with  the   
  12788.                    name of the external program to execute.
  12789.  
  12790.                    I'll automatically create the correct  Dorinfox.Def   
  12791.                    depending on which node you are on.
  12792.  
  12793.                    E.g., if node 1 then Dorinfo1.def will be created. 
  12794.                    E.g., if node 2 then Dorinfo2.def will be created.
  12795.  
  12796.                    Due  to the limitations placed on the  DorinfoX.def   
  12797.                    file, by the author of the file format, Dorinfo can   
  12798.                    only be used on nodes 1 through 9.
  12799.  
  12800.                    E.g., proper dorinfo1.def call:
  12801.  
  12802.                    _dorinfo("c:\osiris\tradewar","twar.bat");
  12803.  
  12804.                    Please  pay  attention  to the  path  part  of  the   
  12805.                    command. It is a proper DOS path and should NOT end   
  12806.                    with a backslash.
  12807.                                         Door.sys
  12808.  
  12809.                    If  you  want  to  create  the  Door.sys  directly,   
  12810.                    bypassing external Door programs, issue the command   
  12811.                    _doorsys(PATH,PRG);  replacing PATH with  the  full   
  12812.                    drive/path  to  the  sub-directory  you  want   the   
  12813.                    DOOR.SYS  written in and replace PRG with the  name   
  12814.                    of the external program to execute.
  12815.  
  12816.  
  12817.  
  12818.          Osiris SE         Technical Reference Manual        Page 212
  12819.  
  12820.                    Door.sys  is  NOT  a multiple user  door  file  and   
  12821.                    cannot be used on more than one node at a time.
  12822.  
  12823.                    E.g., proper door.sys call:
  12824.  
  12825.                    _DOORSYS("c:\osiris\tradwar","TWAR.BAT");
  12826.  
  12827.                    Please  pay  attention  to the  path  part  of  the   
  12828.                    command. It is a proper DOS path and should NOT end   
  12829.                    with a backslash.
  12830.  
  12831.  
  12832.  
  12833.  
  12834.  
  12835.  
  12836.  
  12837.  
  12838.  
  12839.  
  12840.  
  12841.  
  12842.  
  12843.  
  12844.  
  12845.  
  12846.  
  12847.  
  12848.  
  12849.  
  12850.  
  12851.  
  12852.  
  12853.  
  12854.  
  12855.  
  12856.  
  12857.  
  12858.  
  12859.  
  12860.  
  12861.  
  12862.  
  12863.  
  12864.  
  12865.  
  12866.  
  12867.  
  12868.  
  12869.  
  12870.  
  12871.  
  12872.  
  12873.          Osiris SE         Technical Reference Manual        Page 213
  12874.  
  12875.                            Slightly Advanced Game System
  12876.  
  12877.                    _define_var(ch,character); 
  12878.                    _define_var(not_done,integer); 
  12879.                    _define_var(rtcode,integer); 
  12880.                    _define_var(com,integer); 
  12881.                    _assign(com,_PORT); 
  12882.                    _assign(not_done,1); 
  12883.                    _while(not_done); 
  12884.                      _CLS(); 
  12885.                      _DISPLAY_TEXT("C:\osiris\games.mmu"); 
  12886.                      _getc(ch,1); 
  12887.                    _if(ch = 'A'); 
  12888.                    _elseif(com != 2); 
  12889.                       _call(error); 
  12890.                     _else; 
  12891.                       _execute(0,"scab.bat",rtcode); 
  12892.                     _eend; 
  12893.                    _endif; 
  12894.                    _if(ch = 'B'); 
  12895.                        _elseif(com != 2); 
  12896.                          _call(error); 
  12897.                       else; 
  12898.                       _execute(0,"fishing.bat",rtcode); 
  12899.                      _eend; 
  12900.                    _endif; 
  12901.                    _if(ch = 'C'); 
  12902.                       _elseif(com = 4); 
  12903.                           _execute(0,"acey4.bat",rtcode); 
  12904.                       _else; 
  12905.                           _execute(0,"acey.bat",rtcode); 
  12906.                       _eend; 
  12907.                    _endif; 
  12908.                    _if(ch = 'D'); 
  12909.                      _elseif(com != 2); 
  12910.                          _call(error); 
  12911.                       else; 
  12912.                          _execute(0,"galwar.bat",rtcode); 
  12913.                       _eend; 
  12914.                    _endif; 
  12915.                    _if(ch = 'E'); 
  12916.                          _elseif(com != 2); 
  12917.                            _call(error); 
  12918.                           else; 
  12919.                             _execute(0,"tetris.bat",rtcode); 
  12920.                           _eend;       
  12921.                    _endif; 
  12922.                    _if(ch = 'F'); 
  12923.                       _elseif(com = 4); 
  12924.                          _dorinfo("c:\osiris\twar4",trader4.bat); 
  12925.                        _else; 
  12926.                           _dorinfo("c:\osiris\twar",trader.bat); 
  12927.                        _eend; 
  12928.          Osiris SE         Technical Reference Manual        Page 214
  12929.  
  12930.                    _endif; 
  12931.                    _if(ch = 'X'); 
  12932.                      _clear(not_done); 
  12933.                    _endif; 
  12934.                    _wend; 
  12935.                    _mend; 
  12936.                    _procedure(error); 
  12937.                     _define_var(ch,character); 
  12938.                     _printf("\n\nI'm sorry, but you have to be on COM2\n");  
  12939.                     _printf("to play this game.\n\n"); 
  12940.                     _printf("Press any key to continue\n"); 
  12941.                     _getc(ch,0); 
  12942.                    _pend;
  12943.  
  12944.                                        Explanation
  12945.  
  12946.                    What I've done above is slightly more advanced  and   
  12947.                    uses   several   new, you haven't  seen  them  yet,  
  12948.                    SPL/I   commands   that  might  be  required  on  a  
  12949.                    multiple  line  system.  For   a   more    detailed   
  12950.                    explanation  of  the  SPL/I   commands,   reference  
  12951.                    the section on SPL/I.
  12952.  
  12953.                    I'm   assuming   that this system runs  two  nodes,   
  12954.                    one  on  com port 2 and one on com port 4. I'm also  
  12955.                    assuming  that  several  games do not  support  com  
  12956.                    port  4  and those  that  do may need  a  different  
  12957.                    type of control file.
  12958.  
  12959.                    I've   also  intermixed  the  _execute()  and   the  
  12960.                    _dorinfo() methods of calling the games.
  12961.  
  12962.                    Because  I've  got two serial ports to  deal  with,   
  12963.                    I'm  going  to  use  the elseif  statements  inside   
  12964.                    the   _if  statement. There are other methods,  but  
  12965.                    those are a  bit  to complex for you at this time.
  12966.  
  12967.                    If   you're  on a serial port the  game  does   not   
  12968.                    support,   I'm  jumping  to a procedure that  tells   
  12969.                    you   to   switch  nodes if you want to  play.  The  
  12970.                    method  of jumping to  the  sub-routine is  similar  
  12971.                    to the BASIC GOSUB, for any basic  programmers that  
  12972.                    may be reading this.
  12973.  
  12974.  
  12975.  
  12976.  
  12977.  
  12978.  
  12979.  
  12980.  
  12981.  
  12982.  
  12983.          Osiris SE         Technical Reference Manual        Page 215
  12984.  
  12985.                                  Overlaying A Game
  12986.  
  12987.               This  is  a method of calling an external  game  that  I   
  12988.               call,"OVERLAYING" because it is almost like the game  is   
  12989.               part of Osiris, especially if you have LIM 4.0.
  12990.  
  12991.               _if( ch = 'A'); 
  12992.                  _chdir("c:\osiris\twar"); 
  12993.                  _dorinfo("c:\osiris\twar","twar -Qbbs"); 
  12994.                  _chdir("c:\osiris"); 
  12995.               _endif;
  12996.  
  12997.               You'll see a new SPL/I command used here, "CHDIR(path);"   
  12998.               as  well  as  a slight  variation  to  the  "_DORINFO()"   
  12999.               command.
  13000.  
  13001.               _CHDIR(PATH)  is  equivalent  to the  DOS  "CD"  command   
  13002.               except the SPL/I version will also change drives.
  13003.  
  13004.               If you use this command, be SURE and change back to your   
  13005.               OSIRIS=  directory.  If you don't,  strange  things  may   
  13006.               happen later on. 
  13007.                
  13008.               The DORINFO() command, and the DOORSYS() commands  allow   
  13009.               you  to  pass  command line parameters  to  the  program   
  13010.               you're  calling. Just include the  parameters  following   
  13011.               the name of the program.
  13012.  
  13013.                                   Advanced Set-Up
  13014.  
  13015.               Here I'm going to show you how to govern what times  and   
  13016.               days  you're allowed to play games. It's a good  example   
  13017.               on  combining  low  level SPL/I  commands  and  multiple   
  13018.               conditional tests.
  13019.  
  13020.               See  SPL/I  section for additional  information  on  the   
  13021.               commands used in this section.
  13022.  
  13023.               Lets assume that we have a game, Tradewars, and  we only    
  13024.               want to allow callers to play this game on Saturday  and   
  13025.               Sunday between 8 AM and 5 PM.
  13026.  
  13027.               _define_var(time,integer); 
  13028.               _define_var(hr,integer); 
  13029.               _define_var(min,integer); 
  13030.               _define_var(sec,integer); 
  13031.               _define_var(day,integer); 
  13032.               _define_var(hund,integer); 
  13033.               _define_var(ch,character); 
  13034.               _define_var(rtcode,integer); 
  13035.                                 
  13036.          Osiris SE         Technical Reference Manual        Page 216
  13037.  
  13038.  
  13039.               _if(ch = 'A');
  13040.  
  13041.               _dayofweek(day); 
  13042.               _elseif(day = 6 .AND. day = 7); 
  13043.                 _systime(hr,min,sec,hund); 
  13044.                 _math(time = hr * 60 + min); 
  13045.                 _elseif(time > 479 .AND. time < 1020); 
  13046.                    _execute(0,"twar.bat",rtcode); 
  13047.                 _else 
  13048.                    _printf("I'm sorry, but you can only play this\n"); 
  13049.                    _printf("Game between 8 AM and 5 PM.\n\n"); 
  13050.                    _printf("Press any key to continue.\n"); 
  13051.                    _getc(ch,0); 
  13052.                    _cls(); 
  13053.                 _eend; 
  13054.               _else; 
  13055.                 _printf("I'm sorry, you can only play this game on\n"); 
  13056.                 _printf("Saturday and Sundays.\n\n"); 
  13057.                 _printf("Press any key to continue.\n"); 
  13058.                 _getc(ch,0); 
  13059.                 _cls();
  13060.  
  13061.               _eend;
  13062.  
  13063.               _endif;
  13064.  
  13065.               The first thing I did was to retrieve the current day of   
  13066.               the week. If the day of the week wasn't 6 (Saturday)  or   
  13067.               7  (Sunday)  then there was no need to go  any  further.   
  13068.               Just display the error message and return.
  13069.  
  13070.               Providing  the  day was right, I retrieved  the  current   
  13071.               time  and converted it to MINUTES, that's not  the  only   
  13072.               way but it is easy.
  13073.  
  13074.               479,  7.59  AM,  would be the number  of  minutes  since   
  13075.               midnight and 1020, 5 PM, would be the number of  minutes   
  13076.               since midnight.
  13077.  
  13078.               If  the current time is greater than 479 and  less  than   
  13079.               1020, then it's OK to play the game.
  13080.  
  13081.                                      Advantage
  13082.  
  13083.               One  of  the  primary  advantages  to  this  method   of   
  13084.               servicing  external  programs is the ability  to  regain   
  13085.               control  if the external program locks up. Simply  press   
  13086.               Ctrl-Alt-INS at the same time and I'll seize control  of   
  13087.               the computer and bring you back up.
  13088.  
  13089.  
  13090.  
  13091.          Osiris SE         Technical Reference Manual        Page 217
  13092.  
  13093.  
  13094.                                    Problem Areas
  13095.  
  13096.               If  you  have  a 16550 Uart, you  could  run  into  some   
  13097.               problems  with  external  games. Most  of  them  do  not   
  13098.               support  a 16550 and if one is active, they'll lock  up.  
  13099.  
  13100.               The  safe  way around this is to  DEACTIVATE  the  16550   
  13101.               before calling the game and then REACTIVATE it after you   
  13102.               exit the game.
  13103.  
  13104.               I  use  a program called 16550.EXE and I believe  it  is   
  13105.               included with the QKDOOR package.
  13106.  
  13107.               e.g.
  13108.  
  13109.               <START> 
  13110.               qkdoor c:\osiris\OSSE1 c:\osiris\fish\QBBS 
  13111.               16550 1 OFF 
  13112.               cd fish 
  13113.               FISHING 1 C:\Osiris\FISH 
  13114.               16550 1 ON 
  13115.               <EOF>
  13116.  
  13117.               If  you  have a 16550 Uart, then the odds that  you  are   
  13118.               running a locked DTE rate of 19200 baud or 38400. QKDoor   
  13119.               will  read the Osiris Lock variable so that you get  the   
  13120.               correct results.
  13121.  
  13122.               You should be warned that a lot of games will work  just   
  13123.               fine at 2400 baud but cannot be used at high speeds.
  13124.  
  13125.                                        Fossil
  13126.  
  13127.               Some  games  require a fossil to run, it  is  rare,  but   
  13128.               we'll cover it anyway.
  13129.  
  13130.               The best method is to load the fossil before calling the   
  13131.               game and then unloading it after you exit the game.
  13132.  
  13133.               The  BRAND of fossil, there are several, doesn't  really   
  13134.               matter.  We'll use BNU, not the best one but it will  do   
  13135.               in a pinch.
  13136.  
  13137.  
  13138.  
  13139.  
  13140.  
  13141.  
  13142.  
  13143.  
  13144.  
  13145.  
  13146.          Osiris SE         Technical Reference Manual        Page 218
  13147.  
  13148.               Batch  file  using a fossil with a LOCKED DTE  of  19200   
  13149.               baud.
  13150.  
  13151.               <START> 
  13152.               qkdoor c:\osiris\OSSE1 c:\osiris\game2\QBBS 
  13153.               CD game2 
  13154.               bnu /L2=19200 
  13155.               twars 1 
  13156.               bnu /U 
  13157.               <EOF>
  13158.  
  13159.               That should give you a good idea how games can be called   
  13160.               and  a little insight as to how you can work with  OTHER   
  13161.               SPL/I commands to create master pieces of your own.
  13162.  
  13163.                                Door Technical Support 
  13164.   
  13165.               One  final note about external programs.  I  must  limit    
  13166.               technical support to problems with the OSIRIS  interface   
  13167.               only.   
  13168.   
  13169.               This  means that I can't extend advice on specific  door   
  13170.               operation or hardware system configurations. 
  13171.  
  13172.               The responsibility for set up and operation of  specific   
  13173.               programs rests with you.  I make NO commitments that any   
  13174.               DOOR/external program will run properly on your  system.   
  13175.  
  13176.               Each  program  operates differently and  may  require  a   
  13177.               conversion  program,  special device driver,  basic  run   
  13178.               time   module   (BRUN40,  etc.),  or   other   type   of   
  13179.               manipulation to operate.  
  13180.   
  13181.               Some  versions  of  DOS, in combination  with  some  IBM   
  13182.               compatible  hardware, do not function properly with  the   
  13183.               CTTY   command  or  with  some  programs.   THIS  IS   A   
  13184.               DOS/HARDWARE PROBLEM, AND NOT A FLAW IN OSIRIS.   
  13185.   
  13186.               Questions on specific programs should be directed to the   
  13187.               program author.  I DO encourage DOOR authors to  contact   
  13188.               me concerning configuration advice and possible  testing   
  13189.               of their product within my beta group.
  13190.  
  13191.                              Private Cbis Systems 
  13192.   
  13193.          If  you want to set up a PRIVATE BBS, then set  the   default   
  13194.          new user access level to zero. 
  13195.   
  13196.          If the default new user access level is zero, no new  callers   
  13197.          will   be   allowed  to   log-in.    A   text   file   called   
  13198.          "PRIVATE.ASC/MMU/ANS," if it exists, will  be  displayed.  
  13199.  
  13200.  
  13201.          Osiris SE         Technical Reference Manual        Page 219
  13202.  
  13203.                                   Callxxx.cnt 
  13204.                
  13205.          Caller   counters   for  individual  nodes   are   maintained   
  13206.          instead of a SYSTEM wide count. Each nodes caller count   can   
  13207.          be found in the file CALLxxx.CNT, xxxx is node number in base   
  13208.          ten. 
  13209.                    
  13210.          The  file  contains  a single 4 byte  long  integer.
  13211.  
  13212.                         Rcp, Remote Command Processing
  13213.  
  13214.          This  gives Osiris the ability to tell the remote DTE  to  do   
  13215.          certain things. 
  13216.  
  13217.          1.  Request  the remote DTE to send the name defined  in  the   
  13218.          dialing  directory  entry used to place the  call  (used  for   
  13219.          hands off log-on).
  13220.  
  13221.          2. Request the remote DTE to send the password defined in the   
  13222.          dialing  directory  entry used to place the  call  (used  for   
  13223.          hands off log-on).
  13224.  
  13225.          3.  Request the remote DTE to start a download, used to  auto   
  13226.          trigger a download session once the "S" has been pressed.
  13227.  
  13228.          4. Request the remote DTE to start an up-load, used to  auto-  
  13229.          trigger an up-load session once "S" has been pressed.
  13230.  
  13231.          5. Request the remote DTE to hang-up.
  13232.  
  13233.          The remote DTE must support RCP commands for this to work. QT   
  13234.          1.02 supports the above commands.
  13235.  
  13236.                                  Message Cache
  13237.  
  13238.          Osiris  uses  an  internal disk  cache  system  when  reading   
  13239.          messages for display purposes.  The size of this cache is set   
  13240.          to 4096 bytes.
  13241.  
  13242.  
  13243.  
  13244.  
  13245.  
  13246.  
  13247.  
  13248.  
  13249.  
  13250.  
  13251.  
  13252.  
  13253.  
  13254.  
  13255.  
  13256.          Osiris SE         Technical Reference Manual        Page 220
  13257.  
  13258.                                     Key.def
  13259.  
  13260.          The  file contains 256 ASCII flags set to either ON  or  OFF.   
  13261.          This tells me which characters to accept, when getting  input   
  13262.          from the caller. 
  13263.  
  13264.          The purpose is to disallow characters that : 
  13265.  
  13266.          1.  Do  not  meet  Fidonet, RCSA,  UUCP,  and  other  network   
  13267.          standards.
  13268.  
  13269.          2. To cut down on the effects of NOISY lines.
  13270.  
  13271.          A  default  KEY.DEF has been included that  meets  the  above   
  13272.          requirements. 
  13273.  
  13274.          You  may toggle individual characters on or off  from  within   
  13275.          OSM.
  13276.  
  13277.          When you select this option, characters with a check mark are   
  13278.          turned ON or allowed.
  13279.  
  13280.          Some languages, French for instances, use accented characters   
  13281.          that   do   not  fall  within  the  accepted   standards   of   
  13282.          international  message  formatting. You may turn  the  accent   
  13283.          characters  on,  but you should check to be sure  you  aren't   
  13284.          violating the standards of any networks you  belong to.
  13285.  
  13286.                                      Line Noise
  13287.  
  13288.               The  key.def concepts works so well line noise, for  the  
  13289.               most  part,  will be filtered out. The  caller  will  be  
  13290.               lured  into a false impression that the lines are  CLEAN  
  13291.               when  in fact, they may be very bad, to bad for  a  file  
  13292.               transfer.
  13293.  
  13294.               Osiris  will  TRACK  the number of  LINE  HITS  received  
  13295.               during  each connect. When, if, you start to download  a  
  13296.               file  or  files and LINE HITS have been  received,  I'll  
  13297.               display the message:
  13298.  
  13299.               Noise to Signal Ratio: X to y.
  13300.               Continue <Y/n> ?
  13301.  
  13302.               X  is  the number of LINE HITS and Y is  the  number  of  
  13303.               minutes ON-LINE for the current call.
  13304.  
  13305.  
  13306.  
  13307.  
  13308.  
  13309.  
  13310.  
  13311.          Osiris SE         Technical Reference Manual        Page 221
  13312.  
  13313.               E.g.
  13314.  
  13315.               Noise to Signal Ratio: 12 to 3
  13316.  
  13317.               That  would  indicate  12 Line Hits within  the  last  3  
  13318.               minutes.  If one of the line hits had occurred during  a  
  13319.               file transfer, a resend would have resulted.
  13320.  
  13321.                                Auto Daily Report 
  13322.  
  13323.          To keep  you abreast of what's happening,  I'll  generate   a   
  13324.          daily  system  report  to you, one for  each  node  you  have   
  13325.          on-line.
  13326.  
  13327.          Each  time Osiris is called, I'll check to see if  the   date   
  13328.          has  changed. If so, the caller will be asked to please  wait   
  13329.          while  I generate the report. The wait will be short, 4 or  5   
  13330.          seconds, tops.
  13331.  
  13332.  
  13333.  
  13334.  
  13335.  
  13336.  
  13337.  
  13338.  
  13339.  
  13340.  
  13341.  
  13342.  
  13343.  
  13344.  
  13345.  
  13346.  
  13347.  
  13348.  
  13349.  
  13350.  
  13351.  
  13352.  
  13353.  
  13354.  
  13355.  
  13356.  
  13357.  
  13358.  
  13359.  
  13360.  
  13361.  
  13362.  
  13363.  
  13364.  
  13365.  
  13366.          Osiris SE         Technical Reference Manual        Page 222
  13367.  
  13368.          A typical Daily report will look something like this.
  13369.  
  13370.          Node 1 Activities Summary for Thu August 1, 1991
  13371.  
  13372.          Total Calls :   31 
  13373.          In-Use Time :  397 Min(s) 
  13374.          Utilization :   27.57 Percent
  13375.  
  13376.          New Callers :    4
  13377.  
  13378.          Ron Hebert 
  13379.          Casino Sagonis 
  13380.          Jeff Lentini 
  13381.          Gail Long
  13382.  
  13383.          Downloads   :   22 Files    2694646 Bytes
  13384.  
  13385.          d:\general\Tnt100a.lzh 
  13386.          d:\isis\I510b.lzh 
  13387.          d:\isis\I510a.lzh 
  13388.          d:\drivers\Tmod630.exe 
  13389.          d:\drivers\Qt104.exe 
  13390.          d:\arcshell\Arcshell.lzh 
  13391.          d:\drivers\Tmod630.exe 
  13392.          d:\drivers\Qt104.exe 
  13393.          d:\arc\Lha212.exe 
  13394.          d:\arc\Newzoo.exe 
  13395.          d:\add_on\List75i.lzh 
  13396.          d:\drivers\Tmod630.exe 
  13397.          d:\drivers\Qt104.exe 
  13398.          d:\drivers\Tmod630.exe 
  13399.          d:\drivers\Qt104.exe 
  13400.          d:\drivers\Qt104.exe 
  13401.          d:\drivers\Zmax100b.exe 
  13402.          d:\isis\I510b.lzh 
  13403.          d:\isis\I510a.lzh 
  13404.          d:\arcshell\Arcshell.lzh 
  13405.          d:\isis\Nodediff.lzh 
  13406.          d:\isis\Otc200.lzh
  13407.  
  13408.          Uploads     :    1 Files      86144 Bytes
  13409.  
  13410.          d:\uploads\Oilcap2.zip
  13411.  
  13412.  
  13413.  
  13414.  
  13415.  
  13416.  
  13417.  
  13418.  
  13419.  
  13420.  
  13421.          Osiris SE         Technical Reference Manual        Page 223
  13422.  
  13423.                                  On-Line Store
  13424.  
  13425.          Now  we  are about to enter the realm  of  on-line  shopping.   
  13426.          This  is going to be harder for ME to explain than it is  for  
  13427.          YOU  to   set up. Figure on calling the TECH support  BBS  at  
  13428.          least  once  on this one. If you get it set up WITHOUT having  
  13429.          to get help,  pat yourself on the back, you deserve it.
  13430.  
  13431.          The  first  step is the creation of  a  sub-directory  called   
  13432.          "ONLINE." Create this directory in your OSIRIS= directory.
  13433.  
  13434.          e.g. mkdir C:\OSIRIS\ONLINE
  13435.  
  13436.          Please  use ALL the names I use. It'll help a lot when or  if   
  13437.          you need help. 
  13438.  
  13439.          You'll  put  the information files about the  on-line  store,   
  13440.          databases, in this directory.
  13441.  
  13442.          You'll  place all of them there except for 'STORE.DEF'.  This   
  13443.          is  the  file  you create that tells ME  where  to  find  the   
  13444.          product databases for a certain store. The Store.def MUST  be   
  13445.          placed in the Osiris directory.
  13446.  
  13447.          The  Store.def  file contains one line per store.  This  line   
  13448.          consists of TWO parts.
  13449.  
  13450.          Part  one  is the NAME of the store, e.g. Walmart,  and  ENDS   
  13451.          with a comma. 
  13452.  
  13453.          Part two is the full drive and path to the directory, the one   
  13454.          you just created.
  13455.  
  13456.          Sample: 
  13457.   
  13458.          Walmart,C:\Osiris\online 
  13459.   
  13460.          Did you notice the comma? 
  13461.  
  13462.  
  13463.  
  13464.  
  13465.  
  13466.  
  13467.  
  13468.  
  13469.  
  13470.  
  13471.  
  13472.  
  13473.  
  13474.  
  13475.  
  13476.          Osiris SE         Technical Reference Manual        Page 224
  13477.  
  13478.          This  is  used to divide the store name  from the   path  and   
  13479.          there should be NO spaces following the comma  and the  start   
  13480.          of the path to the store directory.
  13481.  
  13482.          If  you're going to have more than one store, add a line  for   
  13483.          each store you add.
  13484.  
  13485.          Make  SURE  you  use  a  different  sub-directory  for   EACH   
  13486.          INDIVIDUAL store. 
  13487.          e.g. 
  13488.   
  13489.          Walmart,C:\osiris\online  
  13490.          The Business Store,C:\Osiris\online2
  13491.  
  13492.                                Creating Proboard.qbs
  13493.  
  13494.               Now  you  have  to tell me how you are going to  set  up   
  13495.               the   departments   within  your  store.  Do   that   by   
  13496.               creating   a  Proboard.Qbs file
  13497.  
  13498.               The   On-line   Store   uses    DEPARTMENTS   to   group    
  13499.               products    together.    For   example;   Hard   Drives,   
  13500.               Tape  Drives,  Disk  Drives,  are all  like products and  
  13501.               would  be  grouped   under  one  Department. We'll  call  
  13502.               this   department   "Drives."  Create  a   file   called  
  13503.               proboard.INI  and enter the following.  Define  Proboard  
  13504.               Vender:   Your Company Name Name:  Product  Name  Access  
  13505.               Level:  Access Level Required to Enter this  Department.  
  13506.               End Define
  13507.  
  13508.               An  Actual Entry would look something like this.  
  13509.  
  13510.               Define Proboard 
  13511.               Vender: Walmart 
  13512.               Name: Drives 
  13513.               Access Level: 1 
  13514.               End Define 
  13515.  
  13516.               You  can  use  the access  levels  to  setup  WholeSale,    
  13517.               Retail,  preferred customer areas, etc.
  13518.  
  13519.               Each  Proboard  definition is an  actual  Database.  The   
  13520.               database numbering would be on a first come, first serve  
  13521.               bases. 
  13522.  
  13523.               The   above example would reference database #1 or   the   
  13524.               Drive  Database. The  department names are  only  visual  
  13525.               references so  you  can use the same "NAME:"  definition  
  13526.               for more than one department.
  13527.  
  13528.  
  13529.  
  13530.  
  13531.          Osiris SE         Technical Reference Manual        Page 225
  13532.  
  13533.                                        Sample 
  13534.   
  13535.          Define Proboard 
  13536.   
  13537.          Vender: The Business Store  
  13538.          Name: Systems  
  13539.          access level: 1 
  13540.   
  13541.          End Define
  13542.  
  13543.          Define Proboard 
  13544.   
  13545.          Vender: The Business Store  
  13546.          Name: Monitors  
  13547.          access level: 1 
  13548.   
  13549.          End Define
  13550.  
  13551.          Define Proboard 
  13552.   
  13553.          Name: Printers  
  13554.          access level: 1  
  13555.          Vender: The Business Store 
  13556.   
  13557.          End Define
  13558.  
  13559.          Define Proboard 
  13560.   
  13561.          Name: Assessors  
  13562.          access level: 1  
  13563.          Vender: The Business Store 
  13564.   
  13565.          End Define
  13566.  
  13567.          Define Proboard 
  13568.   
  13569.          Name: Books  
  13570.          access level: 1  
  13571.          Vender: The Business Store 
  13572.   
  13573.          End Define 
  13574.   
  13575.          Define Proboard 
  13576.   
  13577.          Name: CDROM  
  13578.          access level: 1  
  13579.          Vender: The Business Store 
  13580.   
  13581.          End Define
  13582.  
  13583.  
  13584.  
  13585.  
  13586.          Osiris SE         Technical Reference Manual        Page 226
  13587.  
  13588.               Once   you've   completed  the proboard.ini  file,   you  
  13589.               have  to  compile it. Use the MAGCFG option in OSM. Once   
  13590.               the proboard.qbs file has been created, move it to   the    
  13591.               directory  you   defined in the  store.def  file.  
  13592.  
  13593.               Other  stores  will  require  their   own  proboard.qbs.  
  13594.               The  owners  of those  stores should  provide  you  with  
  13595.               copies of  their proboard.qbs. 
  13596.  
  13597.                         Product Database Storage Structures
  13598.  
  13599.               Each  database  is  broken into  two  files,  HPDxxx.DAT   
  13600.               and   TPDxxx.DAT.     The  first  holds  most   of   the    
  13601.               information    for   each   product   listed   in   that   
  13602.               department  except  for  the   description   field.  The  
  13603.               description  field  is  held   in   a   TPDxxx.dat  file  
  13604.               that  allows variable length records. This  reduces  the  
  13605.               amount  of   disk  space   required    to   store    the  
  13606.               products  and  allows fast record  retrieval  by   using  
  13607.               FIXED  length records via the HPDxxx.DAT structure. 
  13608.  
  13609.                                 Product  Definitions
  13610.  
  13611.               Now   here  comes the really hard part,   defining   the   
  13612.               actual   STORE  databases.  You   do  this  by  creating  
  13613.               dpXXXX.TXT  files containing  a  text formatted list  of  
  13614.               all  the  products  for  that  department.  Take    each   
  13615.               proboard department in the order  you've  defined  them,  
  13616.               this is important. When you build the DPxxxx.TXT   files  
  13617.               they  will be associated with the Departments defined in   
  13618.               the same order.
  13619.  
  13620.               ie   .  .  .   for the DRIVES department, used  in   the   
  13621.               first   example, use DP0001.TXT. 
  13622.   
  13623.               Each product is in the department is defined by starting   
  13624.               the definition with "Define Item." 
  13625.  
  13626.               Each product definition is ended with  "End Define" 
  13627.   
  13628.               Define Item 
  13629.               * 
  13630.               * 
  13631.               End Define
  13632.  
  13633.  
  13634.               The   information about the product is contained  within   
  13635.               these two fields.
  13636.  
  13637.  
  13638.  
  13639.  
  13640.  
  13641.          Osiris SE         Technical Reference Manual        Page 227
  13642.   
  13643.               Each   product  definition should define  the  following   
  13644.               fields, order within the definition doesn't matter.
  13645.  
  13646.  
  13647.          Name: "name of the product"  
  13648.          Catalog   Number:   "For  your  information,   something   to  
  13649.                               reference"  
  13650.          Price: "Unit price for product"  
  13651.          Weight: "Shipping weight, if applied"  
  13652.          Description "A description of the product."  
  13653.          Payment Method:  "Method  of  payment  you'll  allow   when  
  13654.                            ordering"  
  13655.          Order Form: "Name of the customized order form, do  not  use  
  13656.                       any extensions.". 
  13657.   
  13658.          (NOTE  that  each field name ends with a COLON  ':')
  13659.  
  13660.                                   Maximum Field Lengths 
  13661.   
  13662.                    Name  - 40 Characters 
  13663.                    Price - 10 Characters 
  13664.                    Weight- 10 Characters 
  13665.                    Payment Method - 40 Characters 
  13666.                    Catalog Number - 10 Characters 
  13667.                    Order Form - 8 Characters 
  13668.                    Description Field - 1,000,000 Characters 
  13669.  
  13670.  
  13671.               The   field definitions are fairly   straight    forward   
  13672.               except  the description field. 
  13673.  
  13674.                                     Description Field
  13675.  
  13676.                    To   define  the  description  field   use   "Begin  
  13677.                    Description".  It should be the only item  on  that  
  13678.                    line. 
  13679.   
  13680.                    To   END  the  description  definition,  use   "End  
  13681.                    Description"
  13682.  
  13683.  
  13684.                    The   text   between  these  two  lines   will   be   
  13685.                    used  as  the  product's    description      field.       
  13686.                    The         individual      description       LINES  
  13687.                    themselves   should   be  no   longer    than    65   
  13688.                    characters each.
  13689.  
  13690.  
  13691.  
  13692.  
  13693.  
  13694.  
  13695.  
  13696.          Osiris SE         Technical Reference Manual        Page 228
  13697.  
  13698.                                       Example 
  13699.          Begin Description  
  13700.          High  speed mailer system with HTMS, Wazoo,  FSC001,  Sealink  
  13701.          mail Sessions. 10  definable Alt-Fkey and 20 shift/ctl  Keys.  
  13702.          400  definable events, Flash Packing, Dynamic Events, on  the  
  13703.          fly  event redefinition, color configurable.  Safety  catches  
  13704.          for  Bad  calls, busy time out counters per  event,  Multiple  
  13705.          FREQ restriction settings per individual events.  
  13706.          End Description
  13707.  
  13708.                                         Example 2
  13709.  
  13710.                    Example   of an entire Product Definition within  a   
  13711.                    DPxxxx.TXT file; 
  13712.   
  13713.          Define Item 
  13714.   
  13715.          Store: Micro TECH Systems  
  13716.          Name: ISIS Rev 2.14  
  13717.          Catalog Number: MTS01L  
  13718.          Price: 79.95  
  13719.          ;Weight:  
  13720.          Begin Description  
  13721.          High  speed mailer system with HTMS, Wazoo,  FSC001,  Sealink  
  13722.          mail Sessions. 10  definable Alt-Fkey and 20 shift/ctl  Keys.  
  13723.          400  definable events, Flash Packing, Dynamic Events, on  the  
  13724.          fly  event redefinition, color configurable.  Safety  catches  
  13725.          for  Bad  calls, Busy time out counters per  event,  Multiple  
  13726.          FREQ restriction settings per individual events.  
  13727.          End Description  
  13728.          Payment Method: Master Card or Visa  
  13729.          Order Form: ORDER2 
  13730.   
  13731.          End Define 
  13732.   
  13733.                    If  a particular field doesn't apply or isn't  used   
  13734.                    for   that product, leave it out or comment it  out  
  13735.                    by starting the  line with a semi-colon. 
  13736.   
  13737.                    You   can  have  up  to 32,722   individual   items   
  13738.                    listed   per department. Just define each  item  as  
  13739.                    outlined above.
  13740.  
  13741.                                     WARNING 
  13742.  
  13743.                    Do   NOT  alter  the  FIELD   designators  'Store:'   
  13744.                    by adding spaces in an  attempt  to "PRETTY" up the  
  13745.                    display.
  13746.  
  13747.                    'STORE:'  works  while 'STORE       :'   will   NOT  
  13748.                    work.
  13749.  
  13750.  
  13751.          Osiris SE         Technical Reference Manual        Page 229
  13752.  
  13753.  
  13754.               Once   you've  finished  the product   definition   list   
  13755.               for   a  particular   department,  list   that  filename    
  13756.               in   a   file  called "MAGDB.CFG." 
  13757.  
  13758.               e.g. for the FIRST listing . . . 
  13759.   
  13760.               Copy con magdb.cfg 
  13761.               DP0001.TXT 
  13762.               ^Z<RETURN>
  13763.  
  13764.               The    MAGDB.CFG  is  used  by  the   product   database   
  13765.               compiler.   It reads  the  magdb.cfg  file   to   obtain   
  13766.               the  names  of   the department product lists. 
  13767.  
  13768.               Continue   building the rest of your department  product   
  13769.               lists and adding each list to the MAGDB.CFG file.
  13770.  
  13771.               One you've completed this, you'll have a MAGDB.CFG  that  
  13772.               looks something like this, assuming 10 departments.
  13773.  
  13774.   
  13775.               DP0001.TXT 
  13776.               DP0002.TXT 
  13777.               DP0003.TXT 
  13778.               DP0004.TXT 
  13779.               DP0005.TXT 
  13780.               DP0006.TXT 
  13781.               DP0007.TXT 
  13782.               DP0008.TXT 
  13783.               DP0009.TXT 
  13784.               DP0010.TXT 
  13785.   
  13786.               By  doing it this way, you can come up with  any  naming   
  13787.               scheme  that  suits you. I think the above  make  sense,  
  13788.               but  individual preferences . . . 
  13789.   
  13790.               Once  you've  completed the product definitions for  all   
  13791.               the   departments    and  have  the   individual   files    
  13792.               listed     in    MAGDB.CFG,     you're      going     to     
  13793.               compile    them    into    department databases. 
  13794.   
  13795.               Use   the  MAGDB option in OSM. This can take awhile  if  
  13796.               you've a lot of products. 
  13797.   
  13798.               You're   done   with the DPxxxx.TXT files  so  use  some   
  13799.               type   of archive  program, Pkzip, to archive them  away  
  13800.               until you  need to make any changes. 
  13801.   
  13802.               When   it  is time to make those changes, you  can   use   
  13803.               your       word    processors      pattern      matching   
  13804.               Search/Replace   features    to quickly edit  the  items  
  13805.               that need changing.
  13806.          Osiris SE         Technical Reference Manual        Page 230
  13807.  
  13808.               Your   final  set would be to go to OSM and  select  the   
  13809.               command  keys for each store function and then create  a  
  13810.               menu for  full  help display. 
  13811.  
  13812.               When   you  select  the command keys, do  NOT  skip  any  
  13813.               option  on  the menu. You MUST define something, even if  
  13814.               you do NOT  want  to use it.
  13815.  
  13816.               If you do NOT want to use an option, set the command key  
  13817.               to a  numeric character, 0 - 9.
  13818.  
  13819.               The  name of the full help menu is "PROMENU.OJB/ANS."  A   
  13820.               demo  menu is included.
  13821.  
  13822.               Each  store has two optional *.ASC/ANS/MMU files, INFxxx   
  13823.               and   BULxxxx.  "xxxx" is the  stores  number,  directly  
  13824.               references the  position in the proboard.qbs.
  13825.  
  13826.               INF   is   an  information file and it can   or   should   
  13827.               contain   information   about the store.  Who  owns  it,   
  13828.               operating  hours,  voice phone numbers, etc.
  13829.  
  13830.               BUL   is   the store's bulletin file.  It  can   contain   
  13831.               anything. The SPL/I commands supported in both files.
  13832.  
  13833.               You have an intro display file called  SINTRO. A default   
  13834.               one  is included.
  13835.  
  13836.               The   display   of  available stores is  controlled   by   
  13837.               you.  Osiris will displays a TEXT file called SLIST.
  13838.  
  13839.               The  stores are numbered, starting with 1, in the  order   
  13840.               they  are  listed   in   the STORE.DEF file. A    sample    
  13841.               SLIST  is  included.
  13842.  
  13843.                                     Error In Osm
  13844.  
  13845.               In the store menu option, the command "Search For  Item"   
  13846.               should  actual read "Open", meaning it does  nothing  at   
  13847.               this time.
  13848.  
  13849.                                Search All Departments
  13850.  
  13851.               This  feature searches the PRODUCT name field  and  does   
  13852.               not  allow you to search the product  description.  With   
  13853.               the  possibility of hundreds of thousands of  items,  it   
  13854.               would  be  TO time consuming to search  the  description   
  13855.               fields on all items.
  13856.  
  13857.  
  13858.  
  13859.  
  13860.  
  13861.          Osiris SE         Technical Reference Manual        Page 231
  13862.          
  13863.                             Imx Osiris Se Frontend 
  13864.  
  13865.          IMX is the stand alone module for Osiris. Its primary job is   
  13866.          to answer the phone and call Orisis. 
  13867.   
  13868.          IMX  requires 3 command line parameters; 
  13869.   
  13870.          -B BaudRate  
  13871.          -P Com_Port (1-8)  
  13872.          -N Node_number (1-255)  
  13873.   
  13874.          e.g. IMX -B2400 -P2 -N1 
  13875.  
  13876.                            Optional Command Line Switches 
  13877.   
  13878.                
  13879.                    /X,  EXIT with errorlevel 1 if a human calls.  This   
  13880.                    overrides the default VMS shell. 
  13881.   
  13882.                    I'll write a control file called RUNBBSx.Bat with x   
  13883.                    being  the  node number passed on the  IMX  command   
  13884.                    line. 
  13885.   
  13886.                    e.g. /N1 will result in RUNBBS1.BAT being created. 
  13887.   
  13888.                    The contents of RUNBBSx.BAT is one line . . .  
  13889.   
  13890.                    HUMANx BAUD_RATE COM_PORT TIME_TILL_NEXT_EVENT 
  13891.   
  13892.                    x  being the node number passed on the IMX  command   
  13893.                    line. 
  13894.   
  13895.                    This  lets  you run multiple nodes  from  the  same   
  13896.                    directory.
  13897.  
  13898.                    /Mxxxxxx, refers to a MODEM IN string used to force   
  13899.                    the modem to answer the phone rather than using the   
  13900.                    S0 register or auto-answer. The xxxxx is the string   
  13901.                    to  send  to  the  modem to  force  it  to  answer.   
  13902.                    Generally  this  is ATA on  most  Hayes  compatible   
  13903.                    modems. 
  13904.  
  13905.                                            Warning 
  13906.                
  13907.                         In order for this to work, your modem must  be   
  13908.                         set up so it DOESN'T AUTO-ANSWER.
  13909.  
  13910.                         Most  modems will abort an auto-answer if  you   
  13911.                         send them ANYTHING during the answer process. 
  13912.  
  13913.  
  13914.  
  13915.  
  13916.          Osiris SE         Technical Reference Manual        Page 232
  13917.  
  13918.   
  13919.                    /Dtr  means  do NOT use the modem  busy  string  as   
  13920.                    defined  but  simply drop DTR  when  exiting.  This   
  13921.                    means  the  modem will NOT be able  to  answer  the   
  13922.                    phone.
  13923.  
  13924.                    /Hot  means leave the modem AS IS when  exiting.  I   
  13925.                    don't recommend using this switch.
  13926.  
  13927.                                     Sample Batch
  13928.  
  13929.               Example  of a Frontend batch file to run IMX for Node  1   
  13930.               using EXIT errorlevel on Human caller. 
  13931.   
  13932.               :TOP  
  13933.               imx -B 9600 -P 2 -N 1 -M ATA -X  
  13934.               if errorlevel 255 goto end  
  13935.               if errorlevel 1 goto caller  
  13936.               goto TOP  
  13937.               :caller  
  13938.               runbbs1  
  13939.               :end
  13940.  
  13941.               Your RUNBBS1.BAT file will contain: 
  13942.   
  13943.               human1 9600 2 197  
  13944.                       ^------^------ will vary 
  13945.               human1.bat could look something like: 
  13946.   
  13947.               osiris -B%1 -P%2 -T%3 -N1  
  13948.               rem load frontend batch file.  
  13949.               port1 
  13950.                                     Shellxx.cfg 
  13951.   
  13952.               You'll also be required to build a SHELLxx.CFG file.  xx   
  13953.               is the node number you provided on the IMX command line. 
  13954.   
  13955.               This   file   contains  command  line   parameters   you    
  13956.               want passed to Osiris. You should NOT include : -B,  -P,   
  13957.               -N, or -T. I will provide those for you. 
  13958.   
  13959.               IMX, by default, does NOT exit when it calls Osiris  but   
  13960.               uses  the  Virtual Memory  System  to  SHELL to  Osiris.   
  13961.               IMX will shift  to  EMS memory if you have it or to DISK   
  13962.               if  you do not. You'll  have  all your  original  system    
  13963.               memory  for Osiris to run in, except 5.5K. 
  13964.   
  13965.  
  13966.  
  13967.  
  13968.  
  13969.  
  13970.  
  13971.          Osiris SE         Technical Reference Manual        Page 233
  13972.  
  13973.                                   Mdm Control File
  13974.  
  13975.               You need to create a modem control file for IMX. 
  13976.   
  13977.               Select  the MDM option in OSM to build  a modem  control   
  13978.               file  for  IMX. OSM will  explain about the  information   
  13979.               it requires you to supply.
  13980.  
  13981.                                Modem Initialization String
  13982.  
  13983.                    This can be tricky, especially if you have no prior   
  13984.                    mailer   or   bbs  experience  and    unfortunately   
  13985.                    there   isn't  much I can do to help you  with  it.  
  13986.                    There   are   hundreds   of  different  brands   of  
  13987.                    modems.   And   each  one  of those  modems  has  a  
  13988.                    number  of  hardware  dip  switch   settings   that   
  13989.                    can   further   complicate  matters.
  13990.  
  13991.                    About  the  best advise I can give you is  set  the   
  13992.                    modem  so  that  it does not  echo  commands,  uses   
  13993.                    verbose return codes, and auto-answers.
  13994.  
  13995.                    With most Hayes compatible, command set, you  would   
  13996.                    use something like:
  13997.  
  13998.                    ATH0M0V1E0S0=1
  13999.  
  14000.                    Your  modem  may require addition or  even  totally   
  14001.                    different  commands. You'll just have to  read  the   
  14002.                    manual that came with your modem.
  14003.  
  14004.                                      Ok Return Code
  14005.  
  14006.                    IMX  requires  that your modem return  OK  when  it   
  14007.                    sends  the  modem initilization   string.  If  your   
  14008.                    modem ECHOS any part of the modem string,  OK  will   
  14009.                    NOT be returned. If this happens IMX  will exit  to   
  14010.                    DOS  with errorlevel 252. Check your CBISx.log  and    
  14011.                    if  you   do  not  see MODEM : <OK> then  you  KNOW    
  14012.                    this  was  the reason. 
  14013.  
  14014.   
  14015.               The next step is to setup an event file for IMX. 
  14016.   
  14017.                                        Events
  14018.  
  14019.               IMX   can  support up to 400 defined  operating   events     
  14020.               in Stand Alone mode. 
  14021.   
  14022.               An    EVENT  is  used to tell me that you need to   exit     
  14023.               to  your   batch  file at a certain time to  perform  an   
  14024.               external operation. 
  14025.  
  14026.          Osiris SE         Technical Reference Manual        Page 234
  14027.  
  14028.               Even   if  you do NOT want to exit to  do  anything,   I     
  14029.               still  to have events defined to cover each day  of  the    
  14030.               week and to cover all 1440 minutes of the day. 
  14031.   
  14032.               You    use  the EVENT.INI (Default  Event.ini  included)   
  14033.               file   to define, edit, delete, or  view  events  you've   
  14034.               defined.
  14035.  
  14036.               Since  IMX isn't a mail system, you only define  :  Exit  
  14037.               Errorlevel  Starting  Time Ending Time  Day(s)  of  week  
  14038.  
  14039.                                      Exit Errorlevel
  14040.  
  14041.                    Exit   with     this errorlevel  the first time  it    
  14042.                    runs    that    event    for    the   day.    Valid   
  14043.                    errorlevels range from 1 - 255. 
  14044.   
  14045.                    NOTE:  You should avoid using  errorlevels  greater    
  14046.                    than  250  or lower than 10 so you  don't  conflict   
  14047.                    with  internal errorlevels. 
  14048.   
  14049.                    If  you  don't  want  the event  to  exit  with  an   
  14050.                    errorlevel, enter a 0 (Zero) for the errorlevel.
  14051.  
  14052.                                       Starting Time
  14053.  
  14054.                    The time of day the  event  starts. The time is  in   
  14055.                    military  format,   10 PM = 22:00.  Legal  starting   
  14056.                    times range from 00:00 to 23:59. 
  14057.   
  14058.                                        Ending Time
  14059.  
  14060.                    The  time of day the event will end.   The time  is   
  14061.                    in military format, 10 PM = 22:00. 
  14062.   
  14063.                    Legal ending times range from 00:01 to 24:00.
  14064.  
  14065.                                        Day Of Week
  14066.  
  14067.                    WHICH day(s) that event is to run on.
  14068.  
  14069.                    Legal Day of week Verbs Are: 
  14070.   
  14071.                    MON TUE WED THU FRI SAT SUN ALL WEEKEND
  14072.  
  14073.                    You  may stack as many as you need on one line. 
  14074.   
  14075.  
  14076.  
  14077.  
  14078.  
  14079.  
  14080.  
  14081.          Osiris SE         Technical Reference Manual        Page 235
  14082.  
  14083.                    Run Event on MON TUE FRI SAT 
  14084.                    or 
  14085.                    Run Event on ALL  
  14086.                    or  
  14087.                    Run Event on WEEKEND 
  14088.   
  14089.                    NOTE:  No single event may span midnight. You  must   
  14090.                    end  the  event  at 24:00 and start a  new  one  at   
  14091.                    00:00. 
  14092.   
  14093.                    NOTE:   Although  IMX  will only  run  an event one   
  14094.                    time  per day, you should remain OUTSIDE   in  your   
  14095.                    batch  file  for at  least 60   seconds   for   the    
  14096.                    MIDNIGHT   event. 
  14097.   
  14098.                    MIDNIGHT  event  being defined as  the  event  that    
  14099.                    starts at 00:00. All  other  events can  return  as   
  14100.                    quickly  as  possible.
  14101.  
  14102.                    Nothing   BAD   will happen if  you   don't.  It'll     
  14103.                    not  EXIT  again,  but  it   will continually  load   
  14104.                    the event (00:00)  until 00:01 rolls around. 
  14105.                     
  14106.               You  need to COMPILE the EVENT.INI before I can use  it.   
  14107.               Use the EVENT.EXE program for this. Just run it  without   
  14108.               any command line switches. 
  14109.   
  14110.               It  will  generate  an Event.Bbs  file  which   contains    
  14111.               your compiled event.ini. 
  14112.   
  14113.               You   can't  directly use the  Event.Bbs  without  first    
  14114.               renaming it. I  will look for the file EVENTxxx.BBS with   
  14115.               xxx   being  the NODE number you passed on  the  command   
  14116.               line. 
  14117.   
  14118.               e.g. Node 1 -> Event1.Bbs, Node 2 -> Event2.Bbs. 
  14119.   
  14120.               This  allows  you to define DIFFERENT  events  for  each   
  14121.               node,  if you're running more than one.
  14122.  
  14123.  
  14124.  
  14125.  
  14126.  
  14127.  
  14128.  
  14129.  
  14130.  
  14131.  
  14132.  
  14133.  
  14134.  
  14135.  
  14136.          Osiris SE         Technical Reference Manual        Page 236
  14137.  
  14138.                                  Modems, In General
  14139.  
  14140.               IMX  is set up to work with GENERIC modems.  
  14141.  
  14142.               Supported CONNECT codes: 
  14143.               
  14144.               Connect 19200  
  14145.               Connect 14400 
  14146.               Connect 12000 
  14147.               Connect 9600 
  14148.               Connect FAST 
  14149.               Connect 2400 
  14150.               Connect 1200 
  14151.               Connect
  14152.  
  14153.               IMX  also  supports EXTENDED result codes  like  Connect   
  14154.               9600/REL  or CONNECT 14400/ARQ/V32 or almost  any  thing   
  14155.               else  you  can  think  of. I can  do  that  by  IGNORING   
  14156.               everything PASS the numeric, ie. 9600 or 14400, part  of   
  14157.               the message.
  14158.  
  14159.               You  WILL run into a problem if you have a cheaper  9600   
  14160.               baud  modem  that always returns the  LOCKED  rate  PLUS   
  14161.               the connect rate.
  14162.  
  14163.               e.g. CONNECT 19200/2400
  14164.  
  14165.               If you have one of those, you'll need to get ahold of an   
  14166.               advanced mailer that is HIGHLY configurable and lets you   
  14167.               DEFINE  odd  ball  result codes. ISIS is  one  that  can   
  14168.               handle something like that.
  14169.  
  14170.                                    Overlays
  14171.  
  14172.          I  do make extensive use of "OVERLAYS," an  Overlay  contains   
  14173.          part of the program that ONLY loads into memory when you need   
  14174.          it.
  14175.  
  14176.          That  means there _CAN_ be .05 second delay between the  time   
  14177.          you  select  an  option and that  option  executes.  But  .05   
  14178.          seconds would, in most cases, not be noticeable.
  14179.  
  14180.          Earlier,  I said Osiris needs 450K to run. Actually, I  only   
  14181.          NEED 185K to load the program and it is possible to run it in   
  14182.          256K, minus archive support, games, Statistics System, Osage,   
  14183.          and several other external applications.
  14184.  
  14185.                                 Lim/Extended Memory
  14186.  
  14187.               If you have LIM 4.0, EEMS 3.2, or Extended Memory,  I'll   
  14188.               automatically  load  the overlays into that  section  of   
  14189.               memory. That means the entire program is in memory and I   
  14190.               don't have to load overlays from your disk.
  14191.          Osiris SE         Technical Reference Manual        Page 237
  14192.  
  14193.                                     Vms Overlays
  14194.  
  14195.               I  use two special VMS overlays, one for the  Statistics   
  14196.               System and one for Osage.
  14197.  
  14198.               A  VMS  overlay is different from your  regular  overlay   
  14199.               because it doesn't RESERVE any OVERLAY space.
  14200.  
  14201.               Instead  of  reserving  space,  I'll  use  part  of  the   
  14202.               programs  memory,  after  swapping it  to  disk  or  LIM   
  14203.               memory. That greatly reduces the amount of memory needed   
  14204.               to run the program. 
  14205.                 
  14206.                                         Lock-Ups
  14207.  
  14208.                    If  you have LIM 4.0 or EEMS 3.2 memory and  you're   
  14209.                    locking  up when loading the Statistics  System  or   
  14210.                    Osage, you may need to adjust the Overlay memory to   
  14211.                    fit your system.
  14212.  
  14213.                    The default is 256K, which is more than enough  for   
  14214.                    the  Statistics System or Osage and will work  just   
  14215.                    fine on 95 percent of the systems. 
  14216.  
  14217.                    But,  no  two systems are exactly  alike  and  your   
  14218.                    memory layout may require you to fine tune the  VMS   
  14219.                    overlays.
  14220.  
  14221.                    If  it locks, I would suggest that you  start  with   
  14222.                    384 and go up in 10K blocks. Under some conditions,   
  14223.                    you may be able to start at 384 and go DOWN in  10K   
  14224.                    blocks.
  14225.  
  14226.                    E.g., Vetlink #3 will lock if set to 400, but  will   
  14227.                    work just fine with the default 256.
  14228.  
  14229.                    You  can make the adjustments by using the  command   
  14230.                    line  switches, /Oxxx and /Sxxx. xxx is the  amount   
  14231.                    of memory you want.
  14232.  
  14233.                                   Speed Tips
  14234.  
  14235.          A  super  fast  BBS  does not have to  have  the  latest  and   
  14236.          greatest Super Computer. A fast BBS can be set-up on a 10 Mzh   
  14237.          AT.
  14238.  
  14239.          If it is set-up correctly, your callers will think you have a   
  14240.          20 Mzh 80386 instead of a 10 Mzh AT.
  14241.  
  14242.                                       Lim 4.0
  14243.  
  14244.               Install  at  least 2 Meg of LIM 4.0 memory,  4  Meg  for   
  14245.               Optimum results.
  14246.          Osiris SE         Technical Reference Manual        Page 238
  14247.  
  14248.                                        Cache
  14249.  
  14250.               Set-up  a 128K disk cache. I suggest an EXTENDED or  LIM   
  14251.               memory cache. 
  14252.  
  14253.                                    640K Extender
  14254.  
  14255.               There are several public domain Dos Extenders that  will   
  14256.               map  64K  of LIM 4.0 memory to DOS giving you  64K  more   
  14257.               conventional memory that you would normally have.
  14258.  
  14259.               This  means VMS memory swaps for  protocols,  archivers,   
  14260.               and  games SHELLS will have to swap LESS memory to  give   
  14261.               you want you need and LESS means faster.
  14262.  
  14263.                                    Asc/Mmu/Ans Files
  14264.  
  14265.               Create a RAM Disk and place your ASC, MMU and ANS  files    
  14266.               on the RAM disk, don't forget to tell me which directory   
  14267.               to use!
  14268.  
  14269.               I'll  be loading and displaying menus and other  display  
  14270.               files more often than any thing else and if I can do  it   
  14271.               from  a  RAM disk, then the file  is  basically  already   
  14272.               LOADED.  Since most disk caches do not cache RAM  disks,   
  14273.               that leaves more DISK based data in your Cache.
  14274.  
  14275.                                Ovl01818 And Ovl01819
  14276.  
  14277.               Move  those  files  to your RAM disk  and  add  a  PATH=   
  14278.               statement, pointing to THAT directory. 
  14279.  
  14280.               Make  it  the  FIRST  one  in  the  path  statement   so   
  14281.               I'll  look  there, FIRST, before looking in  your  other   
  14282.               PATH= directories.
  14283.  
  14284.               Important,  make  SURE  you do  NOT  have  ovl01818  and   
  14285.               ovl01819 in your OSIRIS ROOT directory.
  14286.  
  14287.                                Mono-Graphics Adapter
  14288.  
  14289.               Do  not use a COLOR monitor on your BBS  machine.  Color   
  14290.               Adapters  are a lot slower than MONO. Using a MONO  card   
  14291.               on the BBS can REALLY speed things up.
  14292.  
  14293.                                      16650 Uart
  14294.  
  14295.               Install  a  16550 high speed Uart on your  serial  card.  
  14296.  
  14297.  
  14298.  
  14299.  
  14300.  
  14301.          Osiris SE         Technical Reference Manual        Page 239
  14302.  
  14303.                                    Fast Harddrive
  14304.  
  14305.               No, you don't have to go out and buy a fast hard  drive.   
  14306.               If you follow the other suggestions, a 40 MLS HD will be   
  14307.               fast enough.
  14308.  
  14309.                                           Scsi
  14310.  
  14311.                    Although SCSI drives are fine for file areas,  they  
  14312.                    do  tend to operate a bit slower than  other  drive  
  14313.                    types when it comes to small or medium disk writes.  
  14314.  
  14315.                    This  makes them unsuitable for use as the  PRIMARY  
  14316.                    drive  for the BBS software and the message  bases,  
  14317.                    especially  if  you are handling large  volumes  of  
  14318.                    echomail.
  14319.  
  14320.                    We're  really not SURE why they tend to be  slower,  
  14321.                    but Osiris sysops report 286 machines with ESDI  or  
  14322.                    IDE  drives  blowing  the doors  off  386  and  486  
  14323.                    machines  with SCSI drives during  echomail  import  
  14324.                    and export.
  14325.  
  14326.                                  Tsr/Device Drivers
  14327.  
  14328.               Get  rid of all TSRs or Device drivers that you  do  not   
  14329.               absolutely have to have to run the computer, they  steal   
  14330.               interrupt time.
  14331.  
  14332.                                   Small Partitions
  14333.  
  14334.               Keep your hard drive partitions as small as possible, no   
  14335.               larger than 30 Meg, 20 is better. The smaller partitions   
  14336.               are  just  plain  faster. If you  HAVE  to  have  larger   
  14337.               partitions,  make  sure  you  only  use  them  to  store   
  14338.               DOWNLOAD files.
  14339.  
  14340.                                    Memory Manager
  14341.  
  14342.               The TYPE or brand of memory manager you use and how  you   
  14343.               set   it  up  can  have  a  direct  impact   on   system   
  14344.               performance.
  14345.                                           Qemm
  14346.  
  14347.                    QEMM  is a nice manager with lots of features,  but   
  14348.                    it does severely degrade system performance in  the   
  14349.                    areas of disk access and screen writes, as much  as   
  14350.                    25  percent in some cases. I would advise that  you   
  14351.                    switch  your  memory manager to 386MAX  if  at  all   
  14352.                    possible.  
  14353.  
  14354.  
  14355.  
  14356.          Osiris SE         Technical Reference Manual        Page 240
  14357.  
  14358.                                             Steath
  14359.  
  14360.                         QEMM  has  a  STEATH option, do  NOT  use  it.   
  14361.                         Although   you   will  pickup  a  few   K   of   
  14362.                         conventional memory, this is offset by a LARGE   
  14363.                         decrease in system performance.
  14364.  
  14365.                                        386Max
  14366.  
  14367.                    386MAX  is  the  memory manager  we  recommend  for   
  14368.                    optimal   system   performance  and    reliability.   
  14369.                    Using   386MAX  will  not degrade disk  access,  in   
  14370.                    fact   it  will  increase the data  transfer  rate,  
  14371.                    nor will  it  have any impact on screen writes.
  14372.  
  14373.                    386MAX  is also considered to be the most  reliable   
  14374.                    memory  manager  you can use and it is  Window  and   
  14375.                    DESQview compatible.
  14376.  
  14377.                    Almost  all  the Osiris sysops that  switched  from  
  14378.                    QEMM  to  386MAX reported their  computers  ran  an  
  14379.                    average of twenty-five percent faster.
  14380.  
  14381.                                        Loadhi
  14382.  
  14383.               Do  NOT LOADHI any application, system driver, TSR  that   
  14384.               will  repeatedly  be  accessed  such  as  ANSI  drivers,   
  14385.               DISKCACHES, BIOS, etc.
  14386.  
  14387.               Although LOADHI will increase your conventional  memory,   
  14388.               it will degrade, drastically, system performance. 
  14389.  
  14390.               An  alternate method is to use a DOS extender that  adds   
  14391.               64K  to  conventional memory. This generally  gives  you   
  14392.               more  conventional memory than LOADING HIGH and it,  for   
  14393.               some reason, doesn't degrade system performance. Vetlink   
  14394.               III,   1-314-334-6359  has  several  PD  DOS   extenders   
  14395.               available for downloading.
  14396.  
  14397.  
  14398.  
  14399.  
  14400.  
  14401.  
  14402.  
  14403.  
  14404.  
  14405.  
  14406.  
  14407.  
  14408.  
  14409.  
  14410.  
  14411.          Osiris SE         Technical Reference Manual        Page 241
  14412.                
  14413.                               21St Century Bbsing
  14414.  
  14415.          BBS'  of the future will in no way, shape, or  form  resembles   
  14416.          the way we do things now.
  14417.  
  14418.          With   everyone   concerned   with   "TIME"   and   "PERSONAL   
  14419.          CONVENIENCE," they simply will not tolerate having to set  in   
  14420.          front of a computer while the terminal program dials the BBS,   
  14421.          having  to  actual  log-on  to a BBS,  or  other  wise  being   
  14422.          "THERE" during the whole process.
  14423.  
  14424.          Osiris  4.00+, TNT 6.00+, and ISIS 6.00+ combine together  to   
  14425.          bring 21st Century BBSing to the 20th Century.
  14426.  
  14427.          If you have our high-speed mailer, ISIS, and install the  TNT   
  14428.          utilities on your BBS, your callers can access all the  major   
  14429.          BBS  operations; Reading/Replying to  messages,  downloading,   
  14430.          uploading,  new  file lists, global file lists,  getting  BBS   
  14431.          statistics (today's callers, yesterday's callers, best  times   
  14432.          to  call, etc.), user lists, adding/removing  message  areas,   
  14433.          etc.  without  having  to log-on, unattended, and  at  a  far   
  14434.          greater speed and in less time than normal.
  14435.  
  14436.          Your  callers  Reading  and Replying  to  messages  on  their   
  14437.          computer  with  an editor similar to Sphinx with  full  mouse   
  14438.          support, graphics, quoting, and other items.
  14439.  
  14440.          They  just tell TNT, by clicking on options, what they  want,   
  14441.          when  to start calling, and they can go shopping,  play  with   
  14442.          the  kids, eat dinner, take a shower, or anything  else  they   
  14443.          want and TNT will take care of everything else.
  14444.  
  14445.          TNT gives your callers more control over their personal  FREE   
  14446.          time.
  14447.  
  14448.          Remote   TNTing  provides  full  security,  including   virus   
  14449.          scanning,   automatically   moving   uploads   into    proper   
  14450.          directories,  updating file listings, giving the  remote  TNT   
  14451.          person credit for uploading. 
  14452.  
  14453.          The same holds true for downloading.
  14454.  
  14455.          In  fact, all the normal BBS restrictions, security  aspects,   
  14456.          and safe guards apply to remote TNT.
  14457.  
  14458.          Not   only   does  TNT  give  your   callers   21st   Century   
  14459.          capabilities,  it  also means you can handle MORE  calls  PER   
  14460.          LINE. 
  14461.  
  14462.          The average TNT session, to retrieve messages, last less than   
  14463.          2 minutes and in a lot of cases, less than one minute.
  14464.  
  14465.  
  14466.          Osiris SE         Technical Reference Manual        Page 242
  14467.  
  14468.  
  14469.          TNT  also takes the INSTALLATION and OPERATION into the  21st   
  14470.          Century.
  14471.  
  14472.          TNT, remote end, takes less than 2 minutes to setup and  use.   
  14473.          YOU can install it on your end in less than a minute.
  14474.  
  14475.          Download  the  TNT  A and  B archives for  FULL  details.  We   
  14476.          provide TNT, Sysop Disk, FREE of charge. 
  14477.           
  14478.                                 Overlay Caching
  14479.  
  14480.          Osiris  will  automatically allocate either an  EMS/LIM  4.00   
  14481.          cache,  Extended Memory Cache, or Conventional Memory  Cache,   
  14482.          to store OVERLAYS. 
  14483.  
  14484.          The  type  of cache; EMS, EXTENDED, or Conventional  will  be   
  14485.          determined  on a first come bases. I'll check for EMS  first,   
  14486.          Extended  second,  and  finally  I'll use  a  small  part  of   
  14487.          conventional memory if all else fails.
  14488.  
  14489.          This  does three things . . .
  14490.  
  14491.          First it makes your disk cache, if you are running one,  much   
  14492.          more effective by freeing it from caching overlay requests. 
  14493.  
  14494.          Second,  the  entire  program runs faster  because  it's  ALL   
  14495.          loaded  into memory and overlays do not have to be read  from   
  14496.          the disk.
  14497.  
  14498.          And  third,  it reduces file SERVER demands  by  keeping  the   
  14499.          overlay in memory instead of reading it from the server.
  14500.  
  14501.                                   Price
  14502.  
  14503.          The Price of Osiris SE depends on the number of LINES  you're   
  14504.          wanting to run.
  14505.  
  14506.          No. of Lines                                          Price
  14507.  
  14508.             1   ............................................  119.95 
  14509.             2   ............................................  179.95 
  14510.             4   ............................................  269.93 
  14511.             8   ............................................  403.75 
  14512.             16  ............................................  600.16 
  14513.             32  ............................................ 1200.00 
  14514.             64  ............................................ 2400.00 
  14515.             128 ............................................ 3800.00 
  14516.             256 ............................................ 5000.00
  14517.  
  14518.          Each License is for one specific computer or LAN network.
  14519.  
  14520.  
  14521.          Osiris SE         Technical Reference Manual        Page 243
  14522.  
  14523.                                    Upgrading
  14524.  
  14525.                             Upgrading To Newer Versions
  14526.  
  14527.                    We  generally produce a new version every 12 to  16   
  14528.                    months.  
  14529.   
  14530.                                    Upgrade Price Chart 
  14531.                    No. of Lines                                Price 
  14532.  
  14533.                       1                                        50.00     
  14534.                       2                                        60.00     
  14535.                       4                                        80.00 
  14536.                       8                                       120.00 
  14537.                      16                                       200.00 
  14538.                      32                                       360.00 
  14539.                      64                                       680.00  
  14540.                     128                                      1320.00 
  14541.                     255                                      2590.00
  14542.  
  14543.                    Bug fixes, when needed, are provided free to anyone   
  14544.                    that wants to download the fix.
  14545.  
  14546.                    A bug fix can be identified by looking at the  last   
  14547.                    two  digits in the version number, X.YY. If .YY  is   
  14548.                    greater than 00, that is a bug fix.
  14549.  
  14550.                    A NEW version can be identified by the first digit,   
  14551.                    X.  
  14552.                                Important Information
  14553.  
  14554.                    New versions often bring desirable added  functions   
  14555.                    or   performance.   But,  you   should   stop   and    
  14556.                    ask   yourself if the upgrade is really  necessary.  
  14557.                    If  you  fail  to do that and upgrade just for  the   
  14558.                    sake  of  upgrading,  you are likely to create more   
  14559.                    tangible   benefits for us, we will  gladly  accept  
  14560.                    your  money,  than for yourself.
  14561.  
  14562.                Upgrading To Multiple Lines Or Adding More Lines
  14563.  
  14564.               I'm  fairly  liberal  on upgrading from  a  single  node   
  14565.               version  to  a  multiple  node  version,  just  pay  the   
  14566.               difference between what you HAVE and what you WANT.
  14567.  
  14568.                              Lost Or Damaged Keys
  14569.  
  14570.          Should  you lose your key, I will provide ONE additional  key   
  14571.          at no charge. There will be a five dollar handling charge for   
  14572.          any  replacement keys after that. Since it takes less than  a   
  14573.          minute to store the key archive on a backup disk, this should   
  14574.          rarely happen.
  14575.  
  14576.          Osiris SE         Technical Reference Manual        Page 244
  14577.  
  14578.                                   Bug Reports
  14579.  
  14580.          I  am sure there are a few bugs in Osiris, no  programmer  is   
  14581.          perfect,  I know none of ours are, and no program is  totally   
  14582.          bug free. 
  14583.           
  14584.          If  you find a bug, PLEASE report it. You'll find  a  BUG.FRM   
  14585.          form included in the archive. Make use of it. 
  14586.  
  14587.                                   Suggestions
  14588.  
  14589.          If  you  have a suggestion for a new  feature or program  you   
  14590.          would  like  to see added  to Osiris, I would  like  to  hear   
  14591.          about it. Just fill out the sug.frm send  mail to: 
  14592.   
  14593.                        International TeleCommunications 
  14594.                             555 North Spring, No.39  
  14595.                         Cape Girardeau, Missouri  63701 
  14596.                            United States of America 
  14597.  
  14598.                                      Help
  14599.  
  14600.          If you need help, you can use the Bbs, Vetlink III, at 1-314-  
  14601.          334-6359.  This is an unmanned system and the sysop picks  up   
  14602.          mail  once  a day. Please give him 48 hours  to  answer  your   
  14603.          question. He does not pickup mail on weekends or holidays.
  14604.  
  14605.          There  is a mailer on Vetlink III, but it is used for  Remote   
  14606.          TNT and Echomail. Do not attempt to send matrix mail or  file   
  14607.          attaches, no one will see them.
  14608.  
  14609.          ITC  maintains a Voice technical support line  at  1-314-335-  
  14610.          5384.  The  line  is manned between 10 Am  and  4  Pm  Monday   
  14611.          through  Friday, Central Standard Time. This is  the  FASTEST   
  14612.          method and the ONLY one we have direct control over.
  14613.           
  14614.                                         Busy
  14615.  
  14616.               This  is a RING THOUGHT System. In other words,  if  the   
  14617.               line is busy, it will switch to an alternate  extension.   
  14618.               So  if the primary line is tied up, you will not  get  a   
  14619.               busy  signal,  it will just not  answer  (unless  you're   
  14620.               lucky and someone else is available to answer).
  14621.  
  14622.  
  14623.  
  14624.  
  14625.  
  14626.  
  14627.  
  14628.  
  14629.  
  14630.  
  14631.          Osiris SE         Technical Reference Manual        Page 245
  14632.  
  14633.                         Exceptional Important, Must Read!
  14634.  
  14635.               International TeleCommunciations and VETLINK III will be  
  14636.               moving  to a new location, about 100 miles south of  our  
  14637.               current  location, in or around Sept. 1992. If you  call  
  14638.               our  voice number or the BBS and get a "Number Has  Been  
  14639.               Disconnected" recording and the phone company screws  up  
  14640.               and  fails  to  give you the new phone  number,  it  has  
  14641.               happened  before, call 1-314-785-7868 and ask  what  the  
  14642.               new number is. 
  14643.  
  14644.               These  people have be kind enough to offer to  give  out  
  14645.               the new number. 
  14646.  
  14647.               They     are    not    employee     of     International  
  14648.               TeleCommunications,  know NOTHING about Osiris, in  fact  
  14649.               they  don't  even own a computer so do not  bother  them  
  14650.               unless  you  get  the  "Number  Has  Been  Disconnected"  
  14651.               message.  
  14652.               
  14653.  
  14654.  
  14655.  
  14656.  
  14657.  
  14658.  
  14659.  
  14660.  
  14661.  
  14662.  
  14663.  
  14664.  
  14665.  
  14666.  
  14667.  
  14668.  
  14669.  
  14670.  
  14671.  
  14672.  
  14673.  
  14674.  
  14675.  
  14676.  
  14677.  
  14678.  
  14679.  
  14680.  
  14681.  
  14682.  
  14683.  
  14684.  
  14685.  
  14686.          Osiris SE         Technical Reference Manual        Page 246
  14687.                
  14688.                                      Spl/I 
  14689.                                Copyright Notice
  14690.  
  14691.          SPL/I   is   the  proprietary   property   of   International   
  14692.          TeleCommunications,   protected  under  U.S  copyright   law,   
  14693.          international  treaty provisions, and trade secret  laws   of   
  14694.          general  applicability. Cloning or  Duplicating,  in  part or  
  14695.          whole is prohibited.
  14696.  
  14697.                                   Spl/I Verses Itp 
  14698.   
  14699.               Things  have really changed in the language  department.   
  14700.               The  original  concept was to create a very  high  level   
  14701.               language that would take most of the "programming"  work   
  14702.               out  of it. But, as more people began to use  ITP,  they   
  14703.               began to demand more and more from it. 
  14704.   
  14705.               It  soon  became  clear that we were going  to  have  to   
  14706.               create  a new lower language in order to meet the  needs   
  14707.               of the ITP users. 
  14708.   
  14709.               In the land of programming, low and high have  different   
  14710.               means.  A  HIGH  level language is one  where  a  single   
  14711.               command  does  a LOT. A LOW level language means  you  a   
  14712.               become  more  involved in what is done,  this  sometimes   
  14713.               requires more steps but you have more control over  what   
  14714.               is going on. 
  14715.   
  14716.               ITP was akin to the COBOL programming language. A single   
  14717.               command  could  do  a  whole  lot,  but  if  you  needed   
  14718.               something a little different, you may not be able to  do   
  14719.               it or you would have to TRICK the system into doing  it.   
  14720.               The TRICKING part could be very hard to pull off. 
  14721.   
  14722.               SPL/I is a cross between 'C', PASCAL, COBOL, and  BASIC.   
  14723.               In some areas it is very high level, databases and  some   
  14724.               internal Osiris functions. In other areas it is very low   
  14725.               level,  Input/Output,  conditional  testing,  controlled   
  14726.               looping, and variables. 
  14727.   
  14728.               But  with  the  higher  degree  of  control  comes  more   
  14729.               responsibility. With ITP, if you mess up the worse  that   
  14730.               could happen was the screen display would mess up or  it   
  14731.               didn't do what you wanted it to do. 
  14732.   
  14733.               Moving  to a lower level language now means if you  mess   
  14734.               up, you stand a good chance of locking the computer  up.   
  14735.               That's something 'C' programmers are very familiar with.   
  14736.               If I don't lock a computer up a couple of dozen times  a   
  14737.               day, I know I'm not DOING much work.
  14738.  
  14739.  
  14740.  
  14741.          Osiris SE         Technical Reference Manual        Page 247
  14742.  
  14743.                                   Don't Be Overwhelmed
  14744.  
  14745.                    Your  first reaction, as you read this, is  "oh  my   
  14746.                    god!".  Don't let it overwhelm you, it looks a  LOT   
  14747.                    harder  than  it actual is. Start  out  slow,  with   
  14748.                    small  programs, and within a few weeks  you'll  be   
  14749.                    doing things you never thought were possible.
  14750.  
  14751.                                     Introduction
  14752.  
  14753.               SPL/I programs work with data. We feed numbers, letters,   
  14754.               and  words  to  the  program and  we  expect  it  to  do   
  14755.               something with the data. 
  14756.   
  14757.               The  next  several  pages   will  concentrate  on   data   
  14758.               concepts and properties. Following that, we'll pounce on   
  14759.               some data and see what we can do. 
  14760.   
  14761.               The  main topic of this section will be the three  great   
  14762.               families  of  data CLASSES: integer, String,  and  real.   
  14763.               We'll  learn what the CLASSES are, how to declare  them,   
  14764.               how  to  use  them, and when to  use  them.  We'll  also   
  14765.               discuss the difference between constants and variables. 
  14766.   
  14767.                            Data: Variables And Constants 
  14768.   
  14769.               SPL/I  can do many things. It can add numbers, beep  the   
  14770.               speaker,  display output to the video screen and  serial   
  14771.               port, calculate cometary orbits, prepare a mailing list,   
  14772.               manage  btree  databases,  multiple  level   conditional   
  14773.               testing,   create/read/write  disk  files,  draw   stick   
  14774.               figures,  or  do  whatever  else  your  imagination  can   
  14775.               create.  To do these tasks, it needs to work with  DATA,   
  14776.               the numbers and characters that bear the information you   
  14777.               use. 
  14778.   
  14779.               The difference between variables and constants is pretty   
  14780.               obvious:  a  variable  can have its  value  assigned  or   
  14781.               changed while the program is running, a constant can't. 
  14782.   
  14783.               A  variable  does  not  disappear once  you  use  it,  a   
  14784.               constant does. 
  14785.   
  14786.               A constant is only kept until the current SPL/I  command   
  14787.               has   been  processed.  After  the  command   has   been   
  14788.               processed, the space or memory occupied by the  constant   
  14789.               is released. The only exception to the this rule is  the   
  14790.               predefined variable constants. 
  14791.   
  14792.               Those  are  predefined  SPL/I  variables  that  you  can   
  14793.               access, but you may not change. 
  14794.  
  14795.  
  14796.          Osiris SE         Technical Reference Manual        Page 248
  14797.  
  14798.               E.g.,   Joe
  14799.  
  14800.               This  is a variable you have defined, its value  can  be   
  14801.               assigned and it can be changed. 
  14802.   
  14803.               E.g.,  _NAME 
  14804.   
  14805.               This  is constant. Its value was assigned by  SPL/I  and   
  14806.               you  may not change it. _NAME, by the way, is  a  string   
  14807.               constant and contains the name of the current caller. 
  14808.   
  14809.               E.g.,  2356 
  14810.   
  14811.               This  is  a constant, Its was declared by  you,  but  it   
  14812.               cannot be changed. 
  14813.   
  14814.               E.g., 50000U
  14815.  
  14816.               This  is  a constant, Its was declared by  you,  but  it   
  14817.               cannot be changed.
  14818.  
  14819.               E.g., "THIS IS A TEST"
  14820.  
  14821.               This  is  a  STRING,  denoted  by  the  double   quotes,   
  14822.               constant. You defined it, but it cannot be changed. 
  14823.   
  14824.               A character constant MUST encase it with single  quotes,   
  14825.               i.e., 'A' or '2', I.e., _ASSIGN(CH,'A');
  14826.  
  14827.                                     Data Classes 
  14828.   
  14829.               Beyond the distinction between variable and constant  is   
  14830.               the  distinction between different types of  data.  Some   
  14831.               data are numbers. Some are letters, or, more  generally,   
  14832.               characters.  Throughput this document, the  data's  type   
  14833.               will be referred to as the CLASS. If CH was declared  as   
  14834.               an integer, its CLASS would be integer. 
  14835.   
  14836.               A  variable  needs  to have its  CLASS  announced  in  a   
  14837.               declaration  statement. I'll fill you in on the  details   
  14838.               as  we  move  along. First, though, let's  look  at  the   
  14839.               fundamental  CLASSES  recognized by  SPL/I.  SPL/I  uses   
  14840.               eight  keywords to set up data CLASSES. Here  are  those   
  14841.               keywords: 
  14842.   
  14843.               Integer  
  14844.               Unsigned_Integer  
  14845.               Long  
  14846.               Unsigned_Long  
  14847.               Real  
  14848.               Character  
  14849.               String(size)  
  14850.               File
  14851.          Osiris SE         Technical Reference Manual        Page 249
  14852.  
  14853.               The integer keyword provides the basic class of integers   
  14854.               used    in    SPL/I.    The    next    three    keywords   
  14855.               (Unsigned_Integer, Long, and Unsigned_Long) are used  to   
  14856.               provide  variations of the INTEGER CLASS; we'll  discuss   
  14857.               their use soon. Character is for letters of the alphabet   
  14858.               and  for  other characters, such as #,$, %, and  &.  The   
  14859.               Real keyword represent numbers with decimal points.  The   
  14860.               keyword  String(size) represents a GROUP of  characters.   
  14861.               The number of characters is defined by the size. 
  14862.   
  14863.               E.g., String(80) defines a group of up to 80 characters. 
  14864.   
  14865.               Integer  CLASSES? Real CLASSES? If you find these  terms   
  14866.               disturbingly  unfamiliar, be assured that I'm  about  to   
  14867.               give you a brief run-down on their meanings.
  14868.  
  14869.               For  a  human, the difference between an integer  and  a   
  14870.               real number is reflected in the way they can be written.   
  14871.               For the computer, the difference is reflected in the way   
  14872.               they are stored. Let's take a look.
  14873.  
  14874.                                          Integer 
  14875.   
  14876.                    The  integer  is  a whole number. It  never  has  a   
  14877.                    fractional part, and in SPL/I  it is never  written   
  14878.                    with  a  decimal point. 2, -23, 2456  are  integers   
  14879.                    while  3.99,  122.1,  2/3, and  999999.99  are  not   
  14880.                    integers. 
  14881.   
  14882.                    Integers  allows a range in values from  -32768  to   
  14883.                    +32768. 
  14884.   
  14885.                                        Unsigned_integer 
  14886.   
  14887.                         An  Unsigned_Integer is a whole number and  is   
  14888.                         basically like its brother the integer. 
  14889.   
  14890.                         The  difference between the two; the range  in   
  14891.                         values. The integer values range from negative   
  14892.                         32768 to a positive 32768. An Unsigned_Integer   
  14893.                         has  a  range in values from 0  to  65535,  no   
  14894.                         negative numbers. 
  14895.   
  14896.                                              Long 
  14897.   
  14898.                         The long is the same as the integer except the   
  14899.                         range  of values is larger. It takes twice  as   
  14900.                         much memory to store a long and it is  slower,   
  14901.                         during arithmetic operations. 
  14902.   
  14903.                         The  long  has  a  range  in  values  from   -  
  14904.                         2,147,483,648 to 2,147,483,647. 
  14905.  
  14906.          Osiris SE         Technical Reference Manual        Page 250
  14907.  
  14908.                                         Unsigned_long 
  14909.   
  14910.                         The   unsigned  long  is  the  same   as   the   
  14911.                         UNSIGNED_INTEGER except the range of values is   
  14912.                         larger. It takes twice as much memory to store   
  14913.                         and it is slower during arithmetic operations. 
  14914.   
  14915.                         The Unsigned_Long has a range in values from 0   
  14916.                         to 4,294,967,295, no negative numbers allowed. 
  14917.   
  14918.                                           Real 
  14919.   
  14920.                    Here are some real numbers: 2.71, 3.16E7, 7.00, and   
  14921.                    2e-8.  Obviously,  there is more than  one  way  to   
  14922.                    write a real number. So SPL/I requires you to write   
  14923.                    all  REAL  numbers in the format  xxxxxxx.yyyyy  or   
  14924.                    123348.1124321.  3.16E7 and 2e-8 are not  supported   
  14925.                    under SPL/I. 
  14926.   
  14927.                    The  key point is the scheme used to store  a  real   
  14928.                    number  is different from the one used to store  an   
  14929.                    integer.   Real  number   representation   involves   
  14930.                    breaking up a number into a fractional part and  an   
  14931.                    exponent  part  and storing the  parts  separately.   
  14932.                    Thus,  the  7.00 would not be stored  in  the  same   
  14933.                    manner as the integer 7, even though both have  the   
  14934.                    same value. Here "0.7" is the fractional part,  and   
  14935.                    the  "1"  is the exponent part.  SPL/I  would   use   
  14936.                    binary numbers and powers of two instead of 10  for   
  14937.                    internal storage. YOu don't have to worry about the   
  14938.                    mechanics of real storage, I'll handle that. You do   
  14939.                    need  to be aware of it, you'll find out why  later   
  14940.                    on.
  14941.  
  14942.                    Lets concentrate on the practical differences: 
  14943.   
  14944.                    1.  Integers are whole numbers, while  real  number   
  14945.                    can represent both whole and fractional numbers. 
  14946.   
  14947.                    2. Real numbers can represent a much large range of   
  14948.                    values than integers. 
  14949.   
  14950.                    3.  For  arithmetic operations,  real  numbers  are   
  14951.                    subject to greater loss of precision. 
  14952.   
  14953.                    4.   Real  operations  are  slower   than   integer   
  14954.                    operations. 
  14955.   
  14956.                    5.  Integers  take two to four bytes of  memory  to   
  14957.                    store, REAL numbers take 8 bytes of memory.
  14958.  
  14959.  
  14960.  
  14961.          Osiris SE         Technical Reference Manual        Page 251
  14962.  
  14963.                               Intermixing Data Classes 
  14964.   
  14965.               The 'C' programming language does allow you to  intermix   
  14966.               data  CLASSES during arithmetic operations  and  compare   
  14967.               statements.  However,  comparing  or  doing   arithmetic   
  14968.               operations  on different CLASSES can lead to  unexpected   
  14969.               results. A professional programmer knows, or should, how   
  14970.               to  manage  intermixed CLASSES so he  gets  the  desired   
  14971.               results. But, you are not a professional programmer  and   
  14972.               we  do  not  expect you to have the  skill  required  to   
  14973.               manage intermixed CLASSES and I can't do it for you. 
  14974.   
  14975.               To  prevent unexpected results, I've decided  to  follow   
  14976.               PASCALS (another popular programming language) lead  and   
  14977.               all   arithmetic  operations  and  conditional   testing   
  14978.               requires  all  the  variables involved be  in  the  same   
  14979.               CLASS.
  14980.  
  14981.               In other words, you may not add an integer with a  long,   
  14982.               both would have to be integers OR both would have to  be   
  14983.               long. 
  14984.   
  14985.               Since I can't read your mind, the next best thing is  to   
  14986.               provide  a method of changing a variables CLASS and  the   
  14987.               contents   of   the   variable,   the    _CAST(variable,   
  14988.               New_Data_class) function. 
  14989.   
  14990.               You should be careful when using the _CAST function. You   
  14991.               can  safely cast a variable UP to the next largest  data   
  14992.               CLASS,  but  casting down to a smaller  data  CLASS  can   
  14993.               sometimes cause the value to change if it is larger than   
  14994.               the  new data CLASSES maximum size. See the  section  on   
  14995.               _CAST for further details.
  14996.  
  14997.                            Declaring An Integer Variable 
  14998.   
  14999.               The  key word _DEFINE_VAR is used to declare  variables.   
  15000.               First comes _DEFINE_VAR, the half-moon opening  bracket,   
  15001.               the  chosen name of the variable, a comma, the key  word   
  15002.               INTEGER, the half-moon closing bracket, and a semicolon.   
  15003.               The following are valid declarations: 
  15004.   
  15005.               _Define_var(hogs,Integer);  
  15006.               _Define_var(cows,Integer);  
  15007.               _define_var(goats,Integer); 
  15008.   
  15009.               These  declarations created variables, but they did  not   
  15010.               provide values for them. They can pick up values in  the   
  15011.               program.
  15012.  
  15013.  
  15014.  
  15015.  
  15016.          Osiris SE         Technical Reference Manual        Page 252
  15017.   
  15018.                               Initializing A Variable
  15019.  
  15020.               To  initialize a variable means to assign it an  initial   
  15021.               value.  In  SPL/I, this can be done  with  the  function   
  15022.               _ASSIGN. 
  15023.   
  15024.               First comes _ASSIGN, the half-moon opening bracket,  the   
  15025.               name of the variable, a comma, the value, the  half-moon   
  15026.               closing  bracket,  and a semicolon. The value can  be  a   
  15027.               constant  or it can be the name of another variable.  If   
  15028.               it is the name of another variable, then the contents of   
  15029.               that  variable  is  assign.  The  following  are   valid   
  15030.               assigns: 
  15031.   
  15032.               _Assign(hogs, 12);  
  15033.               _Assign(cows, 25);  
  15034.               _Assign(goats, hogs);  
  15035.               _Assign(MyName,"John Doe");
  15036.  
  15037.               Although  _ASSIGN  is  primarily used  to  initialize  a   
  15038.               variable,  it  may be used to change the  value  of  the   
  15039.               variable at any time. 
  15040.   
  15041.               Because  _ASSIGN  knows the DATA CLASS of  the  variable   
  15042.               you're  assigning the value to, you do not have  to  add   
  15043.               the  CLASS  indicator to  non-integer  constants;  Long,   
  15044.               Real, or Unsigned_Integer's. 
  15045.   
  15046.               If COW was declared as having a LONG data CLASS 
  15047.   
  15048.               _ASSIGN(COW, 256000); 
  15049.   
  15050.               would be valid.
  15051.  
  15052.               _ASSIGN(COW, 256000L); 
  15053.   
  15054.               would  also  be valid but the trailing  CLASS  indicator   
  15055.               isn't required or used. 
  15056.   
  15057.                                  Integer Constants 
  15058.   
  15059.               The varies integers (21, 32, 14, and 94) are examples of   
  15060.               Integer  constants.  When you use a number  constant  in   
  15061.               SPL/I,  SPL/I assumes it is an Integer constant,  unless   
  15062.               an class indicator is used. 
  15063.   
  15064.               Take the constant 40000. SPL/I would attempt to fit that   
  15065.               into INTEGER format and the results would not be  40000.   
  15066.               40000 exceeds the maximum value an INTEGER can hold. 
  15067.  
  15068.  
  15069.  
  15070.  
  15071.          Osiris SE         Technical Reference Manual        Page 253
  15072.  
  15073.               Constants  that  fall  outside  the  classification   of   
  15074.               INTEGER,  those  larger than 32768, must  have  a  class   
  15075.               indicator. 
  15076.   
  15077.               In  the prior example, 40000 will not fit in an  INTEGER   
  15078.               but  it  can fit in an  UNSIGNED_INTEGER.  The  constant   
  15079.               class indicator for an UNSIGNED_INTEGER is an upper case   
  15080.               U, i.e, 40000U.
  15081.  
  15082.   
  15083.               Example: 
  15084.   
  15085.               _define_var(cows,LONG); 
  15086.  
  15087.  
  15088.               _if(cows < 50000);  
  15089.                                                            _endif
  15090.  
  15091.               This test would not be valid. cows is defined as a  LONG   
  15092.               and  50000  was defined as an  INTEGER  constant.  50000   
  15093.               would  also not be 50000 because it exceeds the  maximum   
  15094.               value an INTEGER can hold. 
  15095.   
  15096.               _define_var(cows,LONG); 
  15097.               _if(cows < 50000L);  
  15098.                                                            _endif
  15099.  
  15100.   
  15101.               Would  be valid because the constant 50000 has the  LONG   
  15102.               class indicator, upper case L. 
  15103.   
  15104.               Constant Class Indicators are U for UNSIGNED_INTEGER and   
  15105.               L for LONG. 
  15106.   
  15107.               Even  thou  REAL is not a INTEGER or  variation  of  the   
  15108.               INTEGER  class, it also has a Constant Class  Indicator,   
  15109.               R. 
  15110.   
  15111.               Examples 
  15112.   
  15113.               50000U  UNSIGNED_INTEGER Constant  
  15114.               50000L  Long Constant  
  15115.               50000R  REAL Constant
  15116.  
  15117.               Constant  CLASS indicators ARE CASE SENSITIVE. l is  NOT   
  15118.               the same as L, u is NOT the same as U. 
  15119.  
  15120.          Osiris SE         Technical Reference Manual        Page 254
  15121.  
  15122.                           Printing Variables And Constants 
  15123.   
  15124.               We'll  use the _printf function to print  the  variables   
  15125.               and  constants. The nature or format for  using  _printf   
  15126.               will be outlined later.
  15127.  
  15128.               This is a complete SPL/I program: 
  15129.   
  15130.               _define_var(cows, Integer);  
  15131.               _define_var(name,string(40)); 
  15132.   
  15133.               _assign(cows, 200);  
  15134.               _assign(name,"Bill"); 
  15135.   
  15136.                
  15137. _printf("%s, I've got %d cows for sale today.\n",name,cows); 
  15138.   
  15139.               Running this program would produce the output: 
  15140.   
  15141.               Bill, I've got 200 cows for sale today. 
  15142.   
  15143.               Printing LONG, UNSIGNED_LONG, REAL, UNSIGNED, CHARACTER,   
  15144.               and  STRING  is  almost the  same  except  the  %<CLASS>   
  15145.               indicator is slightly different.
  15146.  
  15147.               Use  %l for LONG, %x for UNSIGNED_LONG, %r for REAL,  %c   
  15148.               for CHARACTER, and %s for string. See section on _printf   
  15149.               for further details.
  15150.  
  15151.                                   Character Class
  15152.  
  15153.               The character CLASS is used for storing characters  such   
  15154.               as  letters  and punctuation marks. The  standard  ASCII   
  15155.               code  runs  numerically  from 0 to 127.  This  is  small   
  15156.               enough  to fix within the range limits of the  character   
  15157.               CLASS. The IBM PC offers extended ASCII codes, but  they   
  15158.               are within the range limits of the character CLASS. 
  15159.   
  15160.               As you might expect, character variables are declared in   
  15161.               the  same  manner  as other  variables.  Here  are  some   
  15162.               examples: 
  15163.   
  15164.               _define_var( response, character);  
  15165.               _define_value(grade, character); 
  15166.   
  15167.                                     Using Strings 
  15168.   
  15169.               Example of a String:   This is an example of a string. 
  15170.   
  15171.               A string is simply a GROUP of CHARACTERS linked together   
  15172.               so they can ALL be referenced with one variable.
  15173.  
  15174.  
  15175.          Osiris SE         Technical Reference Manual        Page 255
  15176.  
  15177.   
  15178.               In low level programming languages, the lower the  level   
  15179.               the  more  control the programmer has, there  isn't  any   
  15180.               such thing as a STRING data CLASS.
  15181.  
  15182.               In  'C', the programmer has to create a character  array   
  15183.               if he wants to store multiple letters together. 
  15184.   
  15185.               But since the building and using of character arrays  is   
  15186.               so  common,  SPL/I  has taken over  the  grunt  work  of   
  15187.               creating  characters  arrays  by giving  you  a  special   
  15188.               STRING class.
  15189.  
  15190.                                Declaring A String Variable
  15191.  
  15192.                    The key word _DEFINE_VAR is used to declare  string   
  15193.                    variables.  First comes _DEFINE_VAR, the  half-moon   
  15194.                    opening bracket, the chosen name of the variable, a   
  15195.                    comma,  the key word STRING, the half-moon  opening   
  15196.                    bracket,  the  maximum length of  the  string,  the   
  15197.                    half-moon   closing  bracket,   half-moon   closing   
  15198.                    bracket,  and a semicolon. The following are  valid   
  15199.                    declarations: 
  15200.   
  15201.                    _define_var(name,string(80));  
  15202.                    _define_var(City,string(40)); 
  15203.   
  15204.                    In the first define statement, the variable  "NAME"   
  15205.                    was declared as having the CLASS of string and  the   
  15206.                    size  of the string, maximum number  of  characters   
  15207.                    allowed, was set to 80. 
  15208.   
  15209.                    In  the 2nd define statement, the  variable  "CITY"   
  15210.                    was  declared as having a CLASS of string  and  the   
  15211.                    size of the string was set to 40. 
  15212.   
  15213.                    SPL/I does not do LENGTH CHECKING! If you assign  a   
  15214.                    value  to  the  string variable it  must  be  large   
  15215.                    enough to hold all the characters.
  15216.  
  15217.                              Initializing A String Variable 
  15218.   
  15219.                    To initialize a string variable means to assign  it   
  15220.                    an  initial value. In SPL/I, this can be done  with   
  15221.                    the function _ASSIGN. 
  15222.   
  15223.                    First comes _ASSIGN, the half-moon opening bracket,   
  15224.                    the  name of the variable, a comma, the value,  the   
  15225.                    half-moon  closing  bracket, and a  semicolon.  The   
  15226.                    value  can be a constant or it can be the  name  of   
  15227.                    another  variable.  If it is the  name  of  another   
  15228.                    variable,  then  the contents of that  variable  is   
  15229.                    assign. The following are valid assigns:
  15230.          Osiris SE         Technical Reference Manual        Page 256
  15231.  
  15232.  
  15233.                    _ASSIGN(CITY,"CAPE GIRARDEAU, MO");  
  15234.                    _ASSIGN(CITY,_CITY);  
  15235.                    _ASSIGN(CITY,INPUT_STRING); 
  15236.   
  15237.                    In  the first assign statement, CITY was given  the   
  15238.                    value of 
  15239.   
  15240.                    CAPE GIRARDEAU, MO 
  15241.   
  15242.                    In  the  2nd assign statement, CITY was  given  the   
  15243.                    value of the SPL/I predefined variable _CITY. _CITY   
  15244.                    holds the current callers CITY. 
  15245.   
  15246.                    The 3rd assign statement assigns CITY the  contents   
  15247.                    of the string variable INPUT_STRING. 
  15248.   
  15249.                                     String Constants 
  15250.   
  15251.                    A STRING constant is defined by encasing the string   
  15252.                    in double quotes. 
  15253.   
  15254.                    Example 
  15255.   
  15256.                    "THIS IS A STRING" 
  15257.   
  15258.                    The  constant would be seen by SPL/I as : THIS  IS  A   
  15259.                    STRING 
  15260.   
  15261.                    The double quotes are not considered as part of the   
  15262.                    string  constant,  they  are  used  to  define  the   
  15263.                    constants CLASS. 
  15264.   
  15265.                    Example
  15266.  
  15267.                    _Define_var(Caller, String(40));  
  15268.                    _assign(caller,_NAME); 
  15269.   
  15270.                    _IF(caller = "JOHN DOE");  
  15271.                                                                                                                        _ENDIF; 
  15272.  
  15273.  
  15274.                    The  program  declares  that  Caller  is  a  string   
  15275.                    variable that can hold up to 40 characters. 
  15276.  
  15277.  
  15278.  
  15279.  
  15280.          Osiris SE         Technical Reference Manual        Page 257
  15281.  
  15282.                    It then assigns the contents of _NAME, a predefined   
  15283.                    SPL/I variable that holds the current callers name,   
  15284.                    to the variable Caller.
  15285.  
  15286.                    It  then checks the variable caller to see  if  the   
  15287.                    contents  caller  is  equal to JOHN  DOE.  The  _IF   
  15288.                    statement uses a string constant to hold JOHN DOE. 
  15289.   
  15290.                    Although  the  last examples works just  fine,  the   
  15291.                    following would work better 
  15292.  
  15293.  
  15294.                    _IF(_NAME = "JOHN DOE"); 
  15295.   
  15296.                    _ENDIF; 
  15297.   
  15298.                    Instead of declaring a string variable, assign  the   
  15299.                    contents  of _NAME to it, we just referenced  _NAME   
  15300.                    directly in the _IF statement.
  15301.  
  15302.                          Maximum Number Of Active Variables 
  15303.   
  15304.               SPL/I allows you to have a total of 100 active variables   
  15305.               defined.  Once you have finished with a variable and  it   
  15306.               isn't  going to be used again, in the near  future,  the   
  15307.               variable should be freed back to the variable pool. 
  15308.   
  15309.               To  free a variable, use the function  _FREE_VAR.  First   
  15310.               comes  the  keyword  _FREE_VAR,  the  half-moon  opening   
  15311.               bracket, the name of the variable, the half-moon closing   
  15312.               bracket, and a semicolon.
  15313.  
  15314.               Examples 
  15315.   
  15316.               _free_var(cow);  
  15317.               _free_var(horse);  
  15318.               _free_var(first_name); 
  15319.                
  15320.               Warning:  One  thing the compiler cannot keep  you  from   
  15321.               doing  is  declaring  a variable, freeing  it  and  then   
  15322.               attempting to use the variable after you have freed it. 
  15323.  
  15324.               Make  sure you do not use this variable after  you  have   
  15325.               freed it. 
  15326.   
  15327.                                    Variable Names 
  15328.   
  15329.               SPL/I  is very flexible in respects to  variable  names.   
  15330.               They  can  be any combination of letters or  numbers  as   
  15331.               long as the first character of the name is a letter,  A-  
  15332.               Z.
  15333.  
  15334.  
  15335.          Osiris SE         Technical Reference Manual        Page 258
  15336.  
  15337.               Variable names have a maximum length of 15 characters. 
  15338.   
  15339.               SPL/I does reserve the use of INTEGER, UNSIGNED_INTEGER,   
  15340.               LONG,   UNSIGNED_LONG,   CHARACTER,  REAL,   and   FILE.   
  15341.               Attempting  to  use any one of the reserved names  as  a   
  15342.               variable name will fail.
  15343.  
  15344.               Also,   avoid  using  reserved  names  as  PARTS  of   a   
  15345.               variable  or  procedure  name.  This  can  confuse   the   
  15346.               compiler and produce undefined results.
  15347.  
  15348.               E.g.,  BIG_INTEGER could cause problems because  INTEGER   
  15349.               is a reserved name. 
  15350.   
  15351.                                 Predefined Variables
  15352.  
  15353.               SPL/I  has  a number of PREDEFINED variables,  some  are   
  15354.               constants and may not be altered. Most of the predefined   
  15355.               variables deal with the user record.
  15356.  
  15357.               The column marked as FIXED means that if YES appears  in   
  15358.               the  column,  you  many  not  alter  the  value  of  the   
  15359.               variable.
  15360.  
  15361.  
  15362.  
  15363.  
  15364.  
  15365.  
  15366.  
  15367.  
  15368.  
  15369.  
  15370.  
  15371.  
  15372.  
  15373.  
  15374.  
  15375.  
  15376.  
  15377.  
  15378.  
  15379.  
  15380.  
  15381.  
  15382.  
  15383.  
  15384.  
  15385.  
  15386.  
  15387.  
  15388.  
  15389.  
  15390.          Osiris SE         Technical Reference Manual        Page 259
  15391.  
  15392. Variable Name  Variable Type       What it is             Fixed
  15393.  
  15394. _Name          STRING             Callers Name             Yes 
  15395. _City          STRING             City 
  15396. _Pwd           STRING             Password 
  15397. _Phone         STRING             Phone No. 
  15398. _Tcalls        UNSIGNED_INTEGER   Total Calls 
  15399. _Fdate         UNSIGNED_INTEGER   Original Logon Date 
  15400.                PACKED DATE FIELD
  15401.  
  15402. _Ldate         UNSIGNED_INTEGER   Last Date Called 
  15403.                PACKED DATE FIELD
  15404.  
  15405. _Nrestrict     INTEGER            Node Restrictor 
  15406. _Nldisplay     INTEGER            Nodelist Display 
  15407.                0 = No 
  15408.                1 = Yes
  15409.  
  15410. _Alias         STRING             Callers Alias            Yes 
  15411. _Scope         STRING             Scope SR# 
  15412. _Buploads      LONG               Total Uploads(Bytes) 
  15413. _Bdnloads      LONG               Total Dnloads(Bytes) 
  15414. _Sclear        INTEGER            Screen Clear TYPE 
  15415.                1 = ANSI 
  15416.                2 = FF 
  15417.                3 = CR/LF
  15418.  
  15419. _Protocol_num  INTEGER            Protocol Record #        Yes 
  15420. _Lmread        INTEGER            Last Msg Read in 
  15421.                                   Message Center.
  15422.  
  15423. _Lmboard       INTEGER            Last conference 
  15424.                                   board visited. 
  15425. _Lfboard       INTEGER            Last file board 
  15426.                                   visited.
  15427.  
  15428. _Bday          INTEGER            Birth DAY 
  15429. _Bmonth        INTEGER            Birth MONTH 
  15430. _Byear         INTEGER            Birth Year, 2 Digits 
  15431. _Fdnloaded     UNSIGNED_INTEGER   Total Files Dnloaded 
  15432. _Fuploaded     UNSIGNED_INTEGER   Total Files Uploaded 
  15433. _Dntoday       INTEGER            Total Kilo-bytes 
  15434.                                   Dnloaded Today.
  15435.  
  15436.  
  15437.  
  15438.  
  15439.  
  15440.  
  15441.  
  15442.  
  15443.  
  15444.  
  15445.          Osiris SE         Technical Reference Manual        Page 260
  15446.  
  15447. Variable Name  Variable Type       What it is             Fixed
  15448.  
  15449.  
  15450. _Timeon        INTEGER            Total time logged for 
  15451.                                   today. Does not 
  15452.                                   include time for 
  15453.                                   current call.
  15454.  
  15455. _Mcredit       INTEGER            Matrix Credit 
  15456. _Mposts        INTEGER            NO. of Conf. Msgs 
  15457.                                       Entered 
  15458. _Ltime         UNSIGNED_INTEGER    Last TIME on-line. 
  15459.                PACKED TIME FIELD
  15460.  
  15461. _Access        UNSIGNED_INTEGER    Access Level 
  15462. _Ibm           INTEGER             IBM Graphics 
  15463.                1 = YES 
  15464.                0 = NO
  15465.  
  15466. _Osage         INTEGER             Use OSAGE editor 
  15467.                1 = YES 
  15468.                0 = NO
  15469.  
  15470. _Slength       INTEGER             Screen Length 
  15471. _Ansi          INTEGER             ANSI Graphics 
  15472.                1 = YES 
  15473.                0 = NO
  15474.  
  15475. _More          INTEGER             More prompt ON 
  15476.                1 = Yes 
  15477.                0 = No
  15478.  
  15479. _Help          INTEGER             Help Level 
  15480.                1 = Full Help 
  15481.                2 = Short Menu 
  15482.                3 = No Help
  15483.  
  15484. _Nconf         INTEGER             Conf. Mail Check 
  15485.                    1 = Yes             During LOGON. 
  15486.                    0 = No
  15487.  
  15488. _Hotkey        INTEGER             Using HOTKEYS 
  15489.                    0 = No 
  15490.                    1 = Yes
  15491.  
  15492. _Tagprompt     INTEGER             Prompt for Dnload 
  15493.                0 = NO              during New Uploads 
  15494.                1 = YES             search.
  15495.  
  15496. _Rpwd          UNSIGNED_INTEGER    Rotate Password. 
  15497.                0 = No, Anything Else = NO. OF CALLS
  15498.  
  15499.  
  15500.          Osiris SE         Technical Reference Manual        Page 261
  15501.  
  15502. Variable Name  Variable Type       What it is             Fixed
  15503.  
  15504. _Newuploads    INTEGER             New Uploads Search 
  15505.                1 = Yes             during log-in. 
  15506.                0 = NO
  15507.  
  15508.  
  15509. _Timeleft      INTEGER             Time left for call      Yes 
  15510.                                    in Mins.
  15511.  
  15512. _Calltime      INTEGER             Time on-line for        Yes 
  15513.                                    CURRENT call
  15514.  
  15515. _Brate         INTEGER             Current Baud Rate       Yes 
  15516. _Totalcalls    LONG                Total Calls to          Yes 
  15517.                                    current node       
  15518.  
  15519. _Tusers        LONG                Total Users listed      Yes 
  15520.                                    in user.bbs
  15521.  
  15522. _Port          INTEGER             Current Serial Port     Yes 
  15523. _Node          INTEGER             Current Node Number     Yes 
  15524. _Farea#        INTEGER             Current File Area No.   Yes 
  15525. _Marea#        INTEGER             Current Msg Area No.    Yes 
  15526. _Farea_n       STRING(40)          File Area Name          Yes 
  15527. _Marea_n       STRING(40)          MSG Area Name           Yes 
  15528. _Lmsg          INTEGER             Low Message No.         Yes 
  15529. _Hmsg          INTEGER             High Message No.        Yes 
  15530. _Cmsg          INTEGER             Current Message No.     Yes 
  15531. _Gflag         UNSIGNED_INTEGER    General Purpose Flags   Yes 
  15532. _Vendor        STRING(45)          Product Vendor          Yes 
  15533. _Product       STRING(45)          Product Name            Yes 
  15534. _Catnum        STRING(15)          Catalog                 Yes 
  15535. _Uprice        REAL                Product Unit Price      Yes 
  15536. _Terms         STRING(45)          Sales Terms             Yes 
  15537. _Lcname        STRING(40)          Last Callers Name       Yes 
  15538. _Lccity        STRING(30)          Last Callers City       Yes
  15539.  
  15540.                                       Restrictions
  15541.  
  15542.                    There are a couple of restrictions placed on  WHERE   
  15543.                    you  can use a predefined variable. 
  15544.  
  15545.                    You  may  only  use predefined  variables  in  test   
  15546.                    expression (if, elseif, while, etc.). You may use a   
  15547.                    predefined variable in an assign statement.
  15548.  
  15549.                    If  you assign a value to the predefined  variable,   
  15550.                    the  value you assign MUST be contained in  another   
  15551.                    variable.  You  may  not assign  a  constant  to  a   
  15552.                    predefined variable.
  15553.  
  15554.  
  15555.          Osiris SE         Technical Reference Manual        Page 262
  15556.  
  15557.                    Those  restrictions  drastically speed  up  overall   
  15558.                    performance   and  greatly  reduces  the  size   of   
  15559.                    internal command processor.
  15560.  
  15561.                                  Spl/I Command Format 
  15562.   
  15563.               SPL/I  requires all commands start with  the  underscore   
  15564.               character and all commands have to end with a  semicolon   
  15565.               and everything else is ignored. 
  15566.   
  15567.               The  reason is error trapping. The compiler has  a  much   
  15568.               better  chance  of trapping bad commands,  commands  not   
  15569.               used properly, and other items that a language  compiler   
  15570.               might otherwise miss. 
  15571.   
  15572.               Any  'C'  programmer  will tell you,  it  generally  the   
  15573.               computer locking up that tells him that he did something   
  15574.               wrong and not the compiler. 
  15575.   
  15576.               We  think  this format will allow the COMPILER to  do  a   
  15577.               much  better job when it comes to trapping  things  that   
  15578.               may lock up your computer.
  15579.  
  15580.               All  arguments  used within a specific command  must  be   
  15581.               separated by at least one blank space.
  15582.  
  15583.               E.g., _if(rtcode > 10) 
  15584.                               ^ ^ 
  15585.                               Blank spaces.
  15586.  
  15587.               You  may use UPPER case, LOWER case, or any  combination   
  15588.               that suits you, SPL/I with treat them the same, with the   
  15589.               exception of strings constants and character  constants.  
  15590.  
  15591.                                   Language  Syntax 
  15592.  
  15593.               The SPL/I language syntax is a little different than 'C'   
  15594.               syntax.  'C'  is  fairly free flowing and  lets  you  do   
  15595.               things almost any way you want. For example 
  15596.  
  15597.               Y = starting_value(); 
  15598.               for(x = y ; x < 10 ; x++); 
  15599.  
  15600.               means the same as 
  15601.  
  15602.               for(x=starting_value();x<10;x++); 
  15603.  
  15604.               The  second  one LOOKS impressive, but....  the  program   
  15605.               code generated by the 'C' compiler would be the same for   
  15606.               both. The first example is a bit easier to read.
  15607.  
  15608.  
  15609.  
  15610.          Osiris SE         Technical Reference Manual        Page 263
  15611.  
  15612.  
  15613.               In SPL/I, you would do 
  15614.   
  15615.               call starting_value(Y); 
  15616.   
  15617.               for(x = Y : < 10 : 1); 
  15618.   
  15619.               You could not do 
  15620.   
  15621.               for(x = call starting_value(Y) : < 10 : 1);
  15622.  
  15623.               In 'C' you can do 
  15624.   
  15625.               printf("This test #%d\n",get_test_number()); 
  15626.   
  15627.               you could also do it. 
  15628.   
  15629.               y = get_test_number();  
  15630.               printf("This is test #%d\n",y); 
  15631.   
  15632.               The first LOOKS impressive, but again, the compiler will   
  15633.               generate the same instructions for both. 
  15634.   
  15635.               With  SPL/I, we're not going to allow that type of  free   
  15636.               flow design for several reasons. 
  15637.   
  15638.               Microsoft  and other companies that sell  compilers  are   
  15639.               not expected to help programmers when they have problems   
  15640.               debugging their code or trying to figure out HOW to make   
  15641.               a program do what they want. 
  15642.   
  15643.               We, on the other hand, expect to do quite a bit of that.   
  15644.               You are not programmers and we aren't going to treat you   
  15645.               as programmers. 
  15646.   
  15647.               Because  we will be seeing a lot of SPL/I code, we  want   
  15648.               it to be easy to read so we don't have to spend to  much   
  15649.               time figuring out what it is you're attempt to do. 
  15650.   
  15651.               The  other reason is compiler error trapping.  With  the   
  15652.               design  more  or less fixed, the compiler can do  a  lot   
  15653.               MORE in the way of error trapping than a traditional 'C'   
  15654.               compiler.  See the section on ITLINK error codes,  there   
  15655.               are a BUNCH of them.
  15656.  
  15657.                                      Structure
  15658.  
  15659.               SPL/I  is  a STRUCTURED language.  Structured  basically   
  15660.               means flow goes in one direction and there is  generally   
  15661.               only one way out. 
  15662.   
  15663.               All SPL/I programs END with the word _MEND
  15664.  
  15665.          Osiris SE         Technical Reference Manual        Page 264
  15666.   
  15667.               Example 
  15668.   
  15669.                                                                 
  15670.               _MEND 
  15671.   
  15672.               When  the SPL/I program starts, it will continue to  run   
  15673.               the program until it hits the instruction _MEND. Hitting   
  15674.               _MEND is the ONLY way you may exit an SPL/I program. 
  15675.   
  15676.               Example 
  15677.   
  15678.               _DEFINE_VAR(NOT_DONE,INTEGER); 
  15679.   
  15680.               _ASSIGN(NOT_DONE,1);
  15681.  
  15682.               _WHILE(NOT_DONE);
  15683.  
  15684.  
  15685.               _WEND;
  15686.  
  15687.               _MEND 
  15688.   
  15689.               This would be a typical SPL/I program when you want  the   
  15690.               body of the program to execute more than once. The while   
  15691.               statement keeps the program running until you signal  it   
  15692.               to stop by changing NOT_DONE to 0, the while conditional   
  15693.               test returns FALSE and the while loop terminates.
  15694.  
  15695.               All SPL/I commands begin with the underscore  character,   
  15696.               _.  So does most C commands, but the compiler  will  add   
  15697.               the  underscore for you. We'll require you to add it  so   
  15698.               we  can trap unknown commands, or those  spelled  wrong,   
  15699.               quicker. 
  15700.   
  15701.               All SPL/I commands must end with a semicolon, so do  all   
  15702.               'C' commands, in most cases. 
  15703.   
  15704.               Any line that does not end with ; will be thrown out  as   
  15705.               a comment line. The only exception is the underscore. If   
  15706.               the first character is an underscore, the line must  end   
  15707.               with a semicolon. If it doesn't, the compiler will  stop   
  15708.               with an error message. 
  15709.   
  15710.               'C' uses /* to start a comment and */ to end a  comment.   
  15711.               I've  seen a lot of 'C' programmers pulling  their  hair   
  15712.               out  trying  to  find a misplaced  /*  or  */  sequence.   
  15713.               Hopefully, my method of commenting will not cause  those   
  15714.               types of problems.
  15715.  
  15716.          Osiris SE         Technical Reference Manual        Page 265
  15717.  
  15718.               'C'  uses the { and } brackets to show the body  of  if,   
  15719.               while, if/else statements. Believe me, I've spent  HOURS   
  15720.               trying to find a misplaced or missing bracket. It can be   
  15721.               very  hard  to  spot a  missing  character  when  you're   
  15722.               looking at several thousand of them. 
  15723.   
  15724.               Other languages use BEGIN and END to show the bodies  of   
  15725.               if and while. It is  easier to spot a missing word,  but   
  15726.               it has a drawback. 
  15727.   
  15728.               IF()  
  15729.                BEGIN  
  15730.                 WHILE  
  15731.                   BEGIN  
  15732.                   END  
  15733.                END
  15734.  
  15735.   
  15736.               That's  not  to hard to follow, but since  END/BEGIN  is   
  15737.               used for everything, it can be a tad difficult  figuring   
  15738.               out  if  a specific END goes with an IF, FOR,  or  WHILE   
  15739.               since they all use the same BEGIN/END Symbols. 
  15740.   
  15741.               SPL/I  uses  a  different 'END'  type  symbol  for  each   
  15742.               statement.  IF uses ENDIF, ELSEIF uses EEND, WHILE  uses   
  15743.               WEND,  FOR uses FEND, SWITCH uses SEND, CASE use  BREAK.   
  15744.               That  should help when it comes to debugging a  program.   
  15745.               It  also  helps the compiler when it  is  doing  nesting   
  15746.               checks. 
  15747.                        Procedures, Variable Types, And Order
  15748.  
  15749.                                        Procedures
  15750.  
  15751.                    An  SPL/I  program  is  a  collection  of  commands   
  15752.                    grouped   into   procedures.  A  procedure   as   a   
  15753.                    SUBROUTINE, separated from the other groups by  the   
  15754.                    keywords 
  15755.  
  15756.                    _PROCEDURE(the procedures chosen name);
  15757.  
  15758.                    and 
  15759.  
  15760.                    _PEND
  15761.  
  15762.                    "_PROCEDURE(the procedures chosen name);" marks the   
  15763.                    beginning of the sub-routine and "_PEND" marks  the   
  15764.                    END of the sub-routine.
  15765.  
  15766.                    The instructions between these two statements would   
  15767.                    belong TO this procedure and would only be executed   
  15768.                    when the procedure is called, see the section _CALL    
  15769.                    for an explanation on HOW to call a procedure.
  15770.  
  15771.          Osiris SE         Technical Reference Manual        Page 266
  15772.  
  15773.                    _PROCEDURE(the procedures chosen name); 
  15774.                                                                
  15775.                    _PEND
  15776.  
  15777.                    would be your typical procedure with one exception.
  15778.  
  15779.                    The  procedure known as MAIN. MAIN is  defined  FOR   
  15780.                    you  and this procedure starts with the first  line   
  15781.                    of code,line 1. Since all SPL/I programs will  HAVE   
  15782.                    this  procedure, you do not have to define it,  you   
  15783.                    only have to mark the END of the procedure with the   
  15784.                    _MEND command.
  15785.  
  15786.                    _define_var(name,string(80)); 
  15787.                    _assign(name,_name); 
  15788.                    _printf("%s\n",name); 
  15789.                    _mend;
  15790.  
  15791.                    This would be your typical SPL/I program that  does   
  15792.                    NOT use any procedures other than MAIN. Notice  the   
  15793.                    last statement in the program, _MEND. _MEND is ONLY   
  15794.                    used to mark the end of MAIN.
  15795.  
  15796.                    You  MUST  use  this  to  signal  where  the   MAIN   
  15797.                    procedure ends.
  15798.  
  15799.                    _define_var(name,string(80)); 
  15800.                    _assign(name,_name); 
  15801.                    _call(printname); 
  15802.                    _mend;
  15803.  
  15804.                    _procedure(printname);
  15805.  
  15806.                    _printf("%s\n",name);
  15807.  
  15808.                    _pend 
  15809.           
  15810.                    This   program   has  TWO  procedures,   MAIN   and   
  15811.                    PRINTNAME.  You will notice that the 2nd  procedure   
  15812.                    begins AFTER the _MEND. It will ONLY be executed IF   
  15813.                    it  is CALLED. In this case, I did call it and  the   
  15814.                    output would be
  15815.  
  15816.                    The Sysop
  15817.  
  15818.                    providing   the  variable  "name"  contained   "The   
  15819.                    Sysop");
  15820.  
  15821.  
  15822.  
  15823.          Osiris SE         Technical Reference Manual        Page 267
  15824.  
  15825.                    Example
  15826.  
  15827.                    _define_var(name,string(80)); 
  15828.                    _assign(name,_name); 
  15829.                    _mend;
  15830.  
  15831.  
  15832.                    _procedure(printname);
  15833.  
  15834.                    _printf("%s\n",name);
  15835.  
  15836.                    _pend
  15837.  
  15838.                    This   program  uses  TWO  procedures,   MAIN   and   
  15839.                    PRINTNAME.  If  you  run it, the  output  would  be   
  15840.                    blank,  there was no output because  PRINTNAME  was   
  15841.                    never called! 
  15842.                                        Data Types
  15843.  
  15844.                    Not only does a variables have a CLASS, it also has   
  15845.                    a  TYPE. The variables TYPE is determined by  WHERE   
  15846.                    it  was  defined.  SPL/I  supports  two  TYPES   of   
  15847.                    variables, global and automatic.
  15848.  
  15849.                                             Global
  15850.  
  15851.                         A  global variable is one who's  _define_var()   
  15852.                         statement was placed in the MAIN procedure.
  15853.  
  15854.                         A  global  variable can be accessed  from  the   
  15855.                         MAIN  procedure and by other PROCEDURES,  with   
  15856.                         one exception and I'll explain that later. 
  15857.  
  15858.                         Example
  15859.  
  15860.                         _define_var(cow,integer); 
  15861.                         _define_var(goats,integer); 
  15862.                                                                                                                                                           _MEND
  15863.  
  15864.                         Those were GLOBAL variables, they were defined   
  15865.                         in the MAIN procedure.
  15866.  
  15867.  
  15868.  
  15869.  
  15870.  
  15871.  
  15872.  
  15873.          Osiris SE         Technical Reference Manual        Page 268
  15874.  
  15875.                                           Automatic
  15876.  
  15877.                         An automatic variable is one you defined in  a   
  15878.                         procedure OTHER THAN MAIN. 
  15879.  
  15880.                         An  automatic  variable is  different  from  a   
  15881.                         GLOBAL  variable in two ways: It can  ONLY  be   
  15882.                         accessed  by the procedure it was  defined  in   
  15883.                         AND  it will vanish as soon as you  leave  the   
  15884.                         procedure.
  15885.  
  15886.                         Example
  15887.  
  15888.                         _define_var(cow,integer); 
  15889.                         _define_var(goats,integer); 
  15890.                                                                                                        _call(addition); 
  15891.                          _printf("The Total was : %d\n",total); 
  15892.                         _mend;
  15893.  
  15894.  
  15895.                         _procedure(addition);
  15896.  
  15897.                         _define_var(total,integer);
  15898.  
  15899.                         _math(total = cow + goats);
  15900.  
  15901.                         _Pend;
  15902.  
  15903.                         In  the  example,  "total"  is  an   automatic   
  15904.                         variable  because  it was defined  inside  the   
  15905.                         procedure  ADDITION. Goats and cows  are  both   
  15906.                         GLOBAL variables because they were defined  in   
  15907.                         the MAIN procedure.
  15908.  
  15909.                         As  soon  as  you  exit  from  the   procedure   
  15910.                         ADDITION, total will disappear and the  memory   
  15911.                         used to store it will be freed.
  15912.  
  15913.                         The    line   "_printf("The   Total   was    :   
  15914.                         %d\n",total);"  is ILLEGAL because total  does   
  15915.                         not exist! 
  15916.  
  15917.                         "total" was defined in the procedure ADDITION,   
  15918.                         it is an automatic variable and as far as MAIN   
  15919.                         is concerned, it never existed.
  15920.  
  15921.  
  15922.  
  15923.  
  15924.  
  15925.          Osiris SE         Technical Reference Manual        Page 269
  15926.  
  15927.                                           Order
  15928.  
  15929.                    In the case of
  15930.  
  15931.                    _Define_var(COWS,INTEGER);
  15932.  
  15933.                                                                                                                               
  15934.                     _MEND
  15935.  
  15936.                    _PROCEDURE(ADD);
  15937.  
  15938.                    _define_var(COWS,INTEGER);
  15939.  
  15940.                                                                                     
  15941.                     _PEND;
  15942.  
  15943.                    In  this  example, I've defined COWS  in  the  MAIN   
  15944.                    procedure  and  I've also defined COWS in  the  ADD   
  15945.                    procedure.  Yes, this is legal and no it  will  NOT   
  15946.                    destroy  nor will it alter the contents of the  COW   
  15947.                    variable in MAIN.
  15948.  
  15949.                    What  this WILL do is keep you from  accessing  the   
  15950.                    GLOBAL  variable  "COWS" because  you   defined  an   
  15951.                    AUTOMATIC variable "COWS" inside this procedure. As   
  15952.                    long as you are IN this procedure, any reference to   
  15953.                    "COW" will reference the AUTOMATIC variable and not   
  15954.                    the GLOBAL variable.
  15955.  
  15956.  
  15957.  
  15958.  
  15959.  
  15960.  
  15961.  
  15962.  
  15963.  
  15964.  
  15965.  
  15966.  
  15967.  
  15968.  
  15969.  
  15970.  
  15971.          Osiris SE         Technical Reference Manual        Page 270
  15972.  
  15973.               Summary
  15974.  
  15975.               _++(X);
  15976.  
  15977.               x   : A user defined variable, INTEGER CLASS.
  15978.  
  15979.               Description
  15980.  
  15981.               The  _++ function is a QUICK method of incrementing  the 
  15982.               value of x by 1 and has very little overhead.
  15983.  
  15984.               Example
  15985.  
  15986.               See _COPY_CH for example of the possible uses of the _++ 
  15987.               function.
  15988.  
  15989.  
  15990.  
  15991.  
  15992.  
  15993.  
  15994.  
  15995.  
  15996.  
  15997.  
  15998.  
  15999.  
  16000.  
  16001.  
  16002.  
  16003.  
  16004.  
  16005.  
  16006.  
  16007.  
  16008.  
  16009.  
  16010.  
  16011.  
  16012.  
  16013.  
  16014.  
  16015.  
  16016.  
  16017.  
  16018.  
  16019.  
  16020.  
  16021.  
  16022.  
  16023.  
  16024.  
  16025.  
  16026.          Osiris SE         Technical Reference Manual        Page 271
  16027.  
  16028.               Summary
  16029.  
  16030.               _--(X);
  16031.  
  16032.               x   : A user defined variable, INTEGER CLASS.
  16033.  
  16034.               Description
  16035.  
  16036.               The  _--  function is a QUICK method  of  decrement  the 
  16037.               value of x by 1 and has very little overhead.
  16038.  
  16039.               Example
  16040.  
  16041.               The  string  variable  name has  the  contents  of  "The 
  16042.               Sysop". The variable len is an INTEGER.
  16043.  
  16044.               _strlen(name,len); {Place the length of name in len, 9} 
  16045.               _--(len);
  16046.  
  16047.  
  16048.               _while(len > 0 .OR. len = 0);
  16049.  
  16050.               _copy_ch(ch,name,len); 
  16051.               _putc(ch,name,len);
  16052.  
  16053.               _--(len);
  16054.  
  16055.               _wend;
  16056.  
  16057.               Program terminates when the value in len reaches -1. the 
  16058.               output
  16059.  
  16060.               posyS ehT
  16061.  
  16062.               Purpose: Prints the contents of name in reverse.
  16063.  
  16064.  
  16065.  
  16066.  
  16067.  
  16068.  
  16069.  
  16070.  
  16071.  
  16072.  
  16073.  
  16074.  
  16075.  
  16076.  
  16077.  
  16078.  
  16079.  
  16080.  
  16081.          Osiris SE         Technical Reference Manual        Page 272
  16082.  
  16083.               Summary
  16084.  
  16085.               _Atol(destination,source); 
  16086.               _Atoi(destination,source); 
  16087.               _Atof(destination,source);
  16088.  
  16089.               destination : User defined variable 
  16090.               source      : User defined variable, STRING CLASS
  16091.  
  16092.               Description
  16093.  
  16094.               The three functions; atol, atoi, and atof translate  the 
  16095.               contents  of STRING CLASS variables to  either  INTEGER, 
  16096.               LONG, or REAL numbers and place the resulting number  in 
  16097.               the destination variable.
  16098.  
  16099.               atol  translates the contents of the string to a  number 
  16100.               that  will  fit in a LONG CLASS variable.  The  variable 
  16101.               'destination' must be LONG CLASS.
  16102.  
  16103.               atoi  translates the contents of the string to a  number 
  16104.               that will fit in an INTEGER CLASS variable. The variable 
  16105.               'destination' must be INTEGER CLASS.
  16106.  
  16107.               atof  translates the contents of the string to a  number 
  16108.               that  will fit in an REAL CLASS variable.  The  variable 
  16109.               'destination' must be REAL CLASS.
  16110.  
  16111.               You may need to translate a string answer, one  obtained 
  16112.               from the caller, into NUMBER format.
  16113.  
  16114.               You  COULD  use  the CAST function, but  CAST  not  only 
  16115.               changes  the CONTENTS of the variable, it  also  changes 
  16116.               the   variables  CLASS  and  you  may  not  want   that, 
  16117.               especially  if you plan on reusing the  string  variable 
  16118.               later  on. If you CAST it, then it would no longer BE  a 
  16119.               string.
  16120.  
  16121.  
  16122.  
  16123.  
  16124.  
  16125.  
  16126.  
  16127.  
  16128.  
  16129.  
  16130.  
  16131.  
  16132.  
  16133.  
  16134.  
  16135.  
  16136.          Osiris SE         Technical Reference Manual        Page 273
  16137.  
  16138.          Example
  16139.  
  16140. _define_var(input,string(80)); 
  16141. _define_var(result,integer); 
  16142. _define_var(l1,long); 
  16143. _define_var(r1,real);
  16144.  
  16145. _cls(); 
  16146. _printf("Enter a number between 1 and 32000 ? "); 
  16147. _gets(input,79);
  16148.  
  16149. _atoi(result,input); 
  16150. _printf("\nYou entered %d (INTEGER CLASS) \n",result);
  16151.  
  16152. _atol(l1,input); 
  16153. _printf("You entered %l (LONG CLASS)\n",l1);
  16154.  
  16155. _atof(r1,input); 
  16156. _printf("You entered %r (REAL CLASS)\n",r1);
  16157.  
  16158. The output, assuming the caller entered 512.24:
  16159.  
  16160. You entered 512 (INTEGER CLASS) 
  16161. You entered 512 (LONG CLASS) 
  16162. You entered 512.24 (REAL CLASS)
  16163.  
  16164.  
  16165.  
  16166.  
  16167.  
  16168.  
  16169.  
  16170.  
  16171.  
  16172.  
  16173.  
  16174.  
  16175.  
  16176.  
  16177.  
  16178.  
  16179.  
  16180.  
  16181.  
  16182.  
  16183.  
  16184.  
  16185.  
  16186.  
  16187.  
  16188.  
  16189.  
  16190.  
  16191.          Osiris SE         Technical Reference Manual        Page 274
  16192.  
  16193.               Summary
  16194.  
  16195.               _Call(procedure_name);
  16196.  
  16197.               Description
  16198.  
  16199.               This command is used to access other procedures, replace 
  16200.               PROCEDURE_NAME  with the name of the procedure you  want 
  16201.               to call.
  16202.  
  16203.               As  soon  as  you exit the  procedure,  you'll  continue 
  16204.               executing  the  instructions directly  after  the  _CALL 
  16205.               statement.
  16206.  
  16207.               Example
  16208.  
  16209.               _printf("This is the line before the call.\n"); 
  16210.                _CALL(PRINT_THIS); 
  16211.               _printf("This is the line after the call.\n");
  16212.  
  16213.               If the procedure "PRINT_THIS" contained the command
  16214.  
  16215.               _printf("Inside the procedure.\n");
  16216.  
  16217.               Then the output would look like
  16218.  
  16219.               This is the line before the call. 
  16220.               Inside the procedure. 
  16221.               This is the line after the call.
  16222.  
  16223.               Using CALL to invoke procedures is VERY fast.
  16224.  
  16225.               Example
  16226.  
  16227.               _printf("This is the line before the call.\n"); 
  16228.                _CALL(PRINT_THIS); 
  16229.               _printf("This is the line after the call.\n");
  16230.  
  16231.               Then the output would look like
  16232.  
  16233.               This is the line before the call. 
  16234.               Inside the procedure. 
  16235.               This is the line after the call.
  16236.  
  16237.               Would be JUST as fast as
  16238.  
  16239.               _printf("This is the line before the call.\n"); 
  16240.               _printf("Inside the procedure.\n"); 
  16241.               _printf("This is the line after the call.\n");
  16242.  
  16243.  
  16244.  
  16245.  
  16246.          Osiris SE         Technical Reference Manual        Page 275
  16247.  
  16248.               Summary
  16249.  
  16250.               _Cast(chickens, Class);
  16251.  
  16252.               chickens : user defined variable. 
  16253.               CLASS    : The variables NEW data CLASS.
  16254.  
  16255.               Description
  16256.  
  16257.               The  function _CAST lets you quickly change a  variables 
  16258.               data  CLASS and have the CURRENT contents placed in  the 
  16259.               new CLASS.
  16260.  
  16261.               You can safely CAST up to larger data CLASS because  the 
  16262.               next  largest CLASS always includes the  LOWER  CLASSES. 
  16263.               You  should  be  careful  when  CASTING  down  to  lower 
  16264.               CLASSES. If the variable you're CASTING has a value that 
  16265.               is  larger than the upper range of the new  data  CLASS, 
  16266.               the value will be altered to FIT into the new CLASS
  16267.  
  16268.               _DEFINE_VAR(X,INTEGER);
  16269.  
  16270.               _ASSIGN(X,10);
  16271.  
  16272.               x  has the an INTEGER data CLASS and contains the  value 
  16273.               10.
  16274.  
  16275.               _CAST(X,UNSIGNED_INTEGER);
  16276.  
  16277.               x now as an UNSIGNED_INTEGER data CLASS and contains the 
  16278.               value 10.
  16279.  
  16280.               _CAST(X,LONG);
  16281.  
  16282.               x now has a LONG data CLASS and contains the value 10.
  16283.  
  16284.               Here is where you can get into trouble.
  16285.  
  16286.               _DEFINE_VAR(X,REAL); 
  16287.               _ASSIGN_VAR(X,32769.55);
  16288.  
  16289.               x has a REAL data CLASS and contains the value 32769.55
  16290.  
  16291.               _CAST(X,LONG);
  16292.  
  16293.               x  now  has  a LONG data CLASS and  contains  the  value 
  16294.               32769
  16295.  
  16296.               Since  a LONG is an extended integer, the .55  was  lost 
  16297.               during the casting operation.
  16298.  
  16299.               _CAST(X,UNSIGNED_INTEGER);
  16300.  
  16301.          Osiris SE         Technical Reference Manual        Page 276
  16302.  
  16303.               x  now  has  an  the  data  CLASS  UNSIGNED_INTEGER  and 
  16304.               contains the value 32768
  16305.  
  16306.               _CAST(X,INTEGER);
  16307.  
  16308.               x  now has the data CLASS of an INTEGER and  contains  - 
  16309.               32768. The value when from positive to negative  because 
  16310.               the  original  value  exceed the  maximum  range  of  an 
  16311.               INTEGER.
  16312.  
  16313.               _CAST  can be very useful, but it can also get you  into 
  16314.               trouble if you aren't careful.
  16315.  
  16316.               _CAST  becomes  even  more  confusing  when  you   start 
  16317.               switching in and out of CHARACTER and STRING classes.
  16318.  
  16319.               Suppose  you  have  defined  CH  as  a  CHARACTER  class 
  16320.               variable.  You use _GETC(CH,1) and the caller  types  in 
  16321.               'A'.
  16322.  
  16323.               If  you  cast ch to an integer,  _CAST(CH,INTEGER),  you 
  16324.               will  end up with ch containing 65, the ASCII  value  of 
  16325.               'A'.
  16326.  
  16327.               If you cast ch to a string, _CAST(CH,STRING), you'll end 
  16328.               up with ch containing "A". Notice the double quotes,  it 
  16329.               is  NOT  the  same  as 'A'. CH is  now  a  STRING  CLASS 
  16330.               variable capable of holding a string one character long.
  16331.  
  16332.               Suppose  'string'  was declared as  STRING(80)  and  had 
  16333.               "67" in it.
  16334.  
  16335.               _CAST(string,integer);
  16336.  
  16337.               string would have the integer number 65 in it.
  16338.  
  16339.               _CAST(string,character);
  16340.  
  16341.               string  would have 'C' in it, 67 is the ASCII value  for 
  16342.               an uppercase 'C'.
  16343.  
  16344.               When  you start casting outside of the  integer  family, 
  16345.               things can get hard to follow, real quick.
  16346.  
  16347.  
  16348.  
  16349.  
  16350.  
  16351.  
  16352.  
  16353.  
  16354.  
  16355.  
  16356.          Osiris SE         Technical Reference Manual        Page 277
  16357.  
  16358.               Summary
  16359.  
  16360.               _Chdir(directory);
  16361.  
  16362.               directory  : A user defined variable, STRING CLASS or  a 
  16363.                            string constant.
  16364.  
  16365.               Description
  16366.  
  16367.               _CHDIR does the same works like the DOS CD command,  but 
  16368.               can also change DRIVES if a drive letter is used.
  16369.  
  16370.               This function does NOT remember where you were. It is up 
  16371.               to  you  to restore the current drive  and/or  directory 
  16372.               when you are done with what every it was you were  doing 
  16373.               in the other directory.
  16374.  
  16375.  
  16376.               Example
  16377.  
  16378.               _chdir("D:\game2");
  16379.  
  16380.               _chdir("C:\osiris");
  16381.  
  16382.  
  16383.  
  16384.  
  16385.  
  16386.  
  16387.  
  16388.  
  16389.  
  16390.  
  16391.  
  16392.  
  16393.  
  16394.  
  16395.  
  16396.  
  16397.  
  16398.  
  16399.  
  16400.  
  16401.  
  16402.  
  16403.  
  16404.  
  16405.  
  16406.  
  16407.  
  16408.  
  16409.  
  16410.  
  16411.          Osiris SE         Technical Reference Manual        Page 278
  16412.  
  16413.               Summary
  16414.  
  16415.               _Clear(variable);
  16416.  
  16417.               variable : User define variable
  16418.  
  16419.               Description
  16420.  
  16421.               A  very FAST way to clear a variables contents. If  it's 
  16422.               an INTEGER, UNSIGNED_INTEGER, LONG, UNSIGNED_LONG, REAL, 
  16423.               or CHARACTER the value will be set to zero.
  16424.  
  16425.               If  it is a STRING CLASS variable, the contents will  be 
  16426.               set to NULL, empty string.
  16427.  
  16428.               Tip: An empty string has the string length of 0.
  16429.  
  16430.  
  16431.               Example
  16432.  
  16433.               _define_var(sum, integer); 
  16434.               _assign(sum, 10); 
  16435.               _printf("Sum = %d\n",sum);
  16436.  
  16437.               output :
  16438.  
  16439.               Sum = 10
  16440.  
  16441.               _clear(sum); 
  16442.               _printf("Sum = %d\n",sum);
  16443.  
  16444.               output :
  16445.  
  16446.               Sum = 0
  16447.  
  16448.  
  16449.  
  16450.  
  16451.  
  16452.  
  16453.  
  16454.  
  16455.  
  16456.  
  16457.  
  16458.  
  16459.  
  16460.  
  16461.  
  16462.  
  16463.  
  16464.  
  16465.  
  16466.          Osiris SE         Technical Reference Manual        Page 279
  16467.  
  16468.               Summary
  16469.  
  16470.               _Cls();
  16471.  
  16472.               Description
  16473.  
  16474.               CLS will clear the screen, using the screen clear method 
  16475.               the caller has selected; ansi, FF, or CR/LF.
  16476.  
  16477.               Example
  16478.  
  16479.               None Required.
  16480.  
  16481.  
  16482.  
  16483.  
  16484.  
  16485.  
  16486.  
  16487.  
  16488.  
  16489.  
  16490.  
  16491.  
  16492.  
  16493.  
  16494.  
  16495.  
  16496.  
  16497.  
  16498.  
  16499.  
  16500.  
  16501.  
  16502.  
  16503.  
  16504.  
  16505.  
  16506.  
  16507.  
  16508.  
  16509.  
  16510.  
  16511.  
  16512.  
  16513.  
  16514.  
  16515.  
  16516.  
  16517.  
  16518.  
  16519.  
  16520.  
  16521.          Osiris SE         Technical Reference Manual        Page 280
  16522.  
  16523.               Summary
  16524.  
  16525.               _Color(value);
  16526.  
  16527.               value  : INTEGER constants.
  16528.  
  16529.               Description
  16530.  
  16531.               The  color function uses ANSI to change  the  foreground  
  16532.               color  to  the  color pointed to by  value,  an  INTEGER  
  16533.               CONSTANT.
  16534.  
  16535.               Value can be any number between and including 1 - 31.
  16536.  
  16537.               Color #                   Color Produced
  16538.  
  16539.               0                          Black 
  16540.               1                          Blue 
  16541.               2                          Green 
  16542.               3                          Cyan 
  16543.               4                          Red 
  16544.               5                          Magenta 
  16545.               6                          Brown 
  16546.               7                          White 
  16547.               8                          Gray 
  16548.               9                          Light Blue 
  16549.               10                         Light Green 
  16550.               11                         Light Cyan 
  16551.               12                         Light Red 
  16552.               13                         Light Magenta 
  16553.               14                         Yellow 
  16554.               15                         Bright White
  16555.  
  16556.               Add 16 to the above to generate Blinking colors.
  16557.  
  16558.               Example
  16559.  
  16560.               _color(9); 
  16561.               _printf("Hello!");
  16562.  
  16563.               "Hello!" would be printed in Light blue.
  16564.  
  16565.               _color(26); 
  16566.               _printf("HELLO");
  16567.  
  16568.               "HELLO" would be printed in blinking light green.
  16569.  
  16570.  
  16571.  
  16572.  
  16573.  
  16574.  
  16575.  
  16576.          Osiris SE         Technical Reference Manual        Page 281
  16577.  
  16578.               Summary
  16579.  
  16580.               _Command_queue_status(rtcode);
  16581.  
  16582.               rtcode : User defined variable, INTEGER CLASS
  16583.  
  16584.               Description
  16585.  
  16586.               This  function checks the Osiris command stacking  queue 
  16587.               and places a 0 in rtcode if there are pending  commands. 
  16588.               If no commands are pending, a 1 is placed in rtcode.
  16589.  
  16590.  
  16591.               Example
  16592.  
  16593.               _define_var(rtcode,integer); 
  16594.               _command_queue_status(rtcode);
  16595.  
  16596.               _if(rtcode) 
  16597.                  _call(displaymenu); 
  16598.               _endif;
  16599.  
  16600.  
  16601.  
  16602.  
  16603.  
  16604.  
  16605.  
  16606.  
  16607.  
  16608.  
  16609.  
  16610.  
  16611.  
  16612.  
  16613.  
  16614.  
  16615.  
  16616.  
  16617.  
  16618.  
  16619.  
  16620.  
  16621.  
  16622.  
  16623.  
  16624.  
  16625.  
  16626.  
  16627.  
  16628.  
  16629.  
  16630.  
  16631.          Osiris SE         Technical Reference Manual        Page 282
  16632.  
  16633.  
  16634.               Summary
  16635.  
  16636.               _Convert_to_bbs_case(s1);
  16637.  
  16638.               s1  : A user defined variable, STRING CLASS
  16639.  
  16640.               Description
  16641.  
  16642.               Converts the contents of s1 to BBS case (first letter of 
  16643.               a  word to upper case and the rest of the word to  lower 
  16644.               case).
  16645.  
  16646.               If  you are altering one of the user  record  predefined 
  16647.               variables  and  it is a string variable, you  must  call 
  16648.               this  function  to convert the contents of to  BBS  case 
  16649.               before placing it back into the predefined variable.
  16650.  
  16651.               Example
  16652.  
  16653.               _define_var(city,string(80)); 
  16654.               _assign(city,_CITY);
  16655.  
  16656.               _printf("Edit City Field : %s",city); 
  16657.               _gets(city,26); 
  16658.               _convert_to_bbs_case(city); 
  16659.               _assign(_CITY,city);
  16660.  
  16661.  
  16662.  
  16663.  
  16664.  
  16665.  
  16666.  
  16667.  
  16668.  
  16669.  
  16670.  
  16671.  
  16672.  
  16673.  
  16674.  
  16675.  
  16676.  
  16677.  
  16678.  
  16679.  
  16680.  
  16681.  
  16682.  
  16683.  
  16684.  
  16685.  
  16686.          Osiris SE         Technical Reference Manual        Page 283
  16687.  
  16688.               Summary
  16689.  
  16690.               _Copy_ch(ch,string,position);
  16691.  
  16692.               ch      : user defined variable, CHARACTER CLASS 
  16693.               string  : user defined variable, STRING CLASS 
  16694.               position: user defined variable, INTEGER CLASS,  or  an 
  16695.                         Integerconstant.
  16696.  
  16697.               Description
  16698.  
  16699.               _Copy_CH is a high speed function used to extract a COPY 
  16700.               of  a single character from a string. The  character  is 
  16701.               placed in ch. This function does NOT alter the string.
  16702.  
  16703.               The character to extract is pointed to by position.
  16704.  
  16705.               Keep  in mind that a STRING CLASS is actual made  up  of 
  16706.               individual CHARACTERS.
  16707.  
  16708.               The string
  16709.  
  16710.               SYSOP
  16711.  
  16712.               is  5  CHARACTERS  tied together  by  the  STRING  CLASS 
  16713.               declare. But, each individual character can be extracted 
  16714.               and worked with.
  16715.  
  16716.               SPL/I, even the C programming language, starts  labeling 
  16717.               individual  characters in a string with 0. That can,  at 
  16718.               times,  be confusing since we're use to starting  things 
  16719.               with a 1.
  16720.  
  16721.  
  16722.  
  16723.               SYSOP 
  16724.               01234
  16725.  
  16726.               Y has a position of 1, O has a position of 3.
  16727.  
  16728.               To extract Y from this string and assuming the  variable 
  16729.               was named JOHN.
  16730.  
  16731.               _COPY_CH(ch,JOHN,1);
  16732.  
  16733.               The  variable ch, CLASS CHARACTER, now has the  contents 
  16734.               of  Y  and
  16735.  
  16736.               _printf("The 2nd character in your name is %c\n",ch);
  16737.  
  16738.               would produce the output
  16739.  
  16740.               The 2nd character in your name is O 
  16741.          Osiris SE         Technical Reference Manual        Page 284
  16742.  
  16743.               Example
  16744.  
  16745.               _define_var(ch,character); 
  16746.               _define_var(name,String(50)); 
  16747.               _define_var(x,INTEGER); 
  16748.               _assign(name,_name); _assign(ch,0); 
  16749.               _math(x = 0); 
  16750.               _copy_ch(ch,name,x); 
  16751.               _while(ch != ' ' .AND. ch);
  16752.  
  16753.               _putc(ch); 
  16754.               _++(x); 
  16755.               _copy_ch(ch,name,x);
  16756.  
  16757.               _Wend;
  16758.  
  16759.               This program segment will print the callers FIRST name.
  16760.  
  16761.                                    Program Explanation
  16762.  
  16763.                    The first 3 defines set-up the variables that  will 
  16764.                    be used. The first assign copies the callers  name, 
  16765.                    from  the  predefined  variable  _name,  into   the 
  16766.                    variable called name.
  16767.  
  16768.                    The   second  define  makes  sure   the   character 
  16769.                    variable,  ch,  contains  something  other  than  a 
  16770.                    space.
  16771.  
  16772.                    The  math  statement  is  used  to  initialize  the 
  16773.                    variable  x  to  0. The  math  statement  has  less 
  16774.                    overhead than the assign so it is quicker.  Because 
  16775.                    the  first  character  within  a  string  has   the 
  16776.                    position of 0, we want x to also be 0.
  16777.  
  16778.                    The while segment of the program that will loop  as 
  16779.                    long as CH does not have a space in it, but ch does 
  16780.                    have something in it. The "SOMETHING IN IT" is used 
  16781.                    is a safety catch that will keep us from  exceeding 
  16782.                    the end of the string if a space isn't included  in 
  16783.                    the variable name.
  16784.  
  16785.                    In  this case you really don't have to worry  about 
  16786.                    that  because  Osiris does require  two  names  and 
  16787.                    there  is always a space between them. I wanted  to 
  16788.                    include it so you'd KNOW that under most conditions 
  16789.                    you  SHOULD use this type of safety catch when  the 
  16790.                    contents of a string is totally unknown.
  16791.  
  16792.  
  16793.  
  16794.  
  16795.  
  16796.          Osiris SE         Technical Reference Manual        Page 285
  16797.  
  16798.                    _while(ch != ' ' .AND. ch);
  16799.  
  16800.                    This is the glue that holds the thing together.  As 
  16801.                    long as the variable ch does not have the value  of 
  16802.                    '  ' or space .AND. it does have something  in  it, 
  16803.                    then execute the body of the while loop. That's why 
  16804.                    we  used the assign statement to initialize ch.  We 
  16805.                    want to make sure ch will pass the test so the body 
  16806.                    of  the while statement will be executed  as  least 
  16807.                    once.
  16808.  
  16809.                    _putc(ch);
  16810.  
  16811.                    This  uses the high speed, low overhead,  character 
  16812.                    print  routine to display the contents of  ch.  You 
  16813.                    could have used _printf("%c",ch), but _putc(ch)  is 
  16814.                    much faster.
  16815.  
  16816.                    _++(x);
  16817.  
  16818.                    This  is  something you haven't seen  yet,  but  it 
  16819.                    basically  bumps the value in the variable x by  1. 
  16820.                    It  has almost zero overhead and it is the  fastest 
  16821.                    method of incrementing an Integer variable by 1.
  16822.  
  16823.                    _copy_ch(ch,name,x);
  16824.  
  16825.                    Here  we copy a character from name,  TYPE  STRING, 
  16826.                    into ch, CHARACTER CLASS. The character to copy  is 
  16827.                    pointed to by the variable x.
  16828.  
  16829.                    Status table ( name = John Doe)
  16830.  
  16831. Variable       Contents           Times Though The Loop. 
  16832. ---------------------------------------------------------------- 
  16833.   x               0                        0 
  16834.   ch              J                        0
  16835.  
  16836.   x               1                        1 
  16837.   ch              o                        1
  16838.  
  16839.   x               2                        2 
  16840.   ch              h                        2
  16841.  
  16842.   x               3                        3 
  16843.   ch              n                        3
  16844.  
  16845.   x               4                        4 
  16846.   ch             SPACE                     4
  16847.  
  16848.                    Loop terminates, ch has a space in it.
  16849.  
  16850.                    Program output: John 
  16851.          Osiris SE         Technical Reference Manual        Page 286
  16852.  
  16853.                    Here  is an example of why you should normally  use 
  16854.                    the safety check:
  16855.  
  16856.                    Status table ( name = JohnDoe)
  16857.  
  16858. Variable       Contents           Times Though The Loop. 
  16859. ---------------------------------------------------------------- 
  16860.   x               0                        0 
  16861.   ch              J                        0 
  16862.   x               1                        1 
  16863.   ch              o                        1 
  16864.   x               2                        2 
  16865.   ch              h                        2 
  16866.   x               3                        3 
  16867.   ch              n                        3 
  16868.   x               4                        4 
  16869.   ch              D                        4 
  16870.   x               5                        5 
  16871.   ch              o                        5 
  16872.   x               6                        6 
  16873.   ch              e                        6 
  16874.   x               7                        7 
  16875.   ch              NULL                     7
  16876.  
  16877.                    If you just looked for a space, you would not  find 
  16878.                    one.  You  would continue to increment  x  and  you 
  16879.                    would  be in an infinite loop, until  your  program 
  16880.                    attempt  to  access a memory address that  did  not 
  16881.                    exist and then the computer would lock up.
  16882.  
  16883.                    The  contents of any STRING variable,  will  always 
  16884.                    end  with  a NULL, a zero, which will  evaluate  to 
  16885.                    FALSE.
  16886.  
  16887.                    Again, always use a safety catch if you're not sure 
  16888.                    what you're testing for is going to be there.
  16889.  
  16890.                    Since we know that a space is going to be  there,in 
  16891.                    this case, the best way to do it
  16892.  
  16893.                    _while(ch != ' '); 
  16894.                       _putc(ch); 
  16895.                       _++(x); 
  16896.                       _copy_ch(ch,name,x); 
  16897.                    _Wend;
  16898.  
  16899.                    Doing  away  with the .AND. will  create  a  faster 
  16900.                    routine.
  16901.  
  16902.  
  16903.  
  16904.  
  16905.  
  16906.          Osiris SE         Technical Reference Manual        Page 287
  16907.  
  16908.               Summary
  16909.  
  16910.               _Continue;
  16911.  
  16912.               Description
  16913.  
  16914.               This statement can be used in a while loop to alter  the 
  16915.               normal flow of a program. When _continue is encountered, 
  16916.               the  rest of the iteration will be skipped and the  next 
  16917.               iteration to be stared.
  16918.  
  16919.               Example
  16920.  
  16921.               _while( count < 201);
  16922.  
  16923.                 _if(count < 101); 
  16924.                       _continue; 
  16925.                 _endif;
  16926.  
  16927.                 _printf("Count = %d\n",count);
  16928.  
  16929.               _wend
  16930.  
  16931.               The  first 100 times through, the _IF(count < 101)  will 
  16932.               cause the continue statement to be executed and
  16933.  
  16934.               _printf("Count = %d\n",count);
  16935.  
  16936.               will be skipped.
  16937.  
  16938.                        ----------------- 
  16939.                       v                 | 
  16940.               _while( count < 201);     | 
  16941.                                         | 
  16942.                 _if(count < 101);       | 
  16943.                       _continue;-------- 
  16944.                 _endif;
  16945.  
  16946.                 _printf("Count = %d\n",count);
  16947.  
  16948.               _wend
  16949.  
  16950.  
  16951.  
  16952.  
  16953.  
  16954.  
  16955.  
  16956.  
  16957.  
  16958.  
  16959.  
  16960.  
  16961.          Osiris SE         Technical Reference Manual        Page 288
  16962.  
  16963.               Summary
  16964.  
  16965.               _Curget(row,col);
  16966.  
  16967.               Row, 
  16968.               Col, : User defined variables, INTEGER CLASS.
  16969.  
  16970.               Description
  16971.  
  16972.               This  function  retrieves the current  position  of  the 
  16973.               cursor, and stores it in the variables ROW and COL.
  16974.  
  16975.               The  curget function would be used in  conjunction  with 
  16976.               the  window  functions  to save  the  cursor,  prior  to 
  16977.               opening a window, and then restore the cursor after  the 
  16978.               window has been closed.
  16979.  
  16980.               See Openwindow/Closewindow/Clearwindow for example.
  16981.  
  16982.  
  16983.  
  16984.  
  16985.  
  16986.  
  16987.  
  16988.  
  16989.  
  16990.  
  16991.  
  16992.  
  16993.  
  16994.  
  16995.  
  16996.  
  16997.  
  16998.  
  16999.  
  17000.  
  17001.  
  17002.  
  17003.  
  17004.  
  17005.  
  17006.  
  17007.  
  17008.  
  17009.  
  17010.  
  17011.  
  17012.  
  17013.  
  17014.  
  17015.  
  17016.          Osiris SE         Technical Reference Manual        Page 289
  17017.  
  17018.               Summary
  17019.  
  17020.               _Dayofweek(day);
  17021.  
  17022.               day : User defined variable, INTEGER CLASS.
  17023.  
  17024.               Description
  17025.  
  17026.               _Dayofweek  returns the current day of the week  in  the 
  17027.               variable day. Days are numbered 1- 7 representing Monday 
  17028.               to Sunday.
  17029.  
  17030.               Example
  17031.  
  17032.               _define_var(today,integer);
  17033.  
  17034.               _dayofweek(today);
  17035.  
  17036.  
  17037.  
  17038.  
  17039.  
  17040.  
  17041.  
  17042.  
  17043.  
  17044.  
  17045.  
  17046.  
  17047.  
  17048.  
  17049.  
  17050.  
  17051.  
  17052.  
  17053.  
  17054.  
  17055.  
  17056.  
  17057.  
  17058.  
  17059.  
  17060.  
  17061.  
  17062.  
  17063.  
  17064.  
  17065.  
  17066.  
  17067.  
  17068.  
  17069.  
  17070.  
  17071.          Osiris SE         Technical Reference Manual        Page 290
  17072.  
  17073.               The   following  commands  pertain  to  Btree   Database 
  17074.               functions.  See  the section on Btree  databases  for  a 
  17075.               tutorial on database construction.
  17076.  
  17077.  
  17078.               Summary
  17079.  
  17080.               _Addrecord(); 
  17081.               _Loadrecord(rtcode,key); 
  17082.               _Copyfrom(dest,field#); 
  17083.               _Opendatabase(fname); 
  17084.               _Closedatabase(); 
  17085.               _Getnextrecord(rtcode); 
  17086.               _Settofirstrecord(); 
  17087.               _Deleterecord(rtcode,key); 
  17088.               _Rewriterecord(); 
  17089.               _Copyto(field#,source);
  17090.  
  17091.               Description
  17092.  
  17093.               _Addrecord(),  adds the current database record  to  the 
  17094.               database.
  17095.  
  17096.               _Loadrecord(rtcode,key),   loads  the  database   record 
  17097.               pointed  to  by KEY. 1 is placed in  Rtcode,  a  INTEGER 
  17098.               CLASS variable, if the record was loaded. 0 is placed in 
  17099.               rtcode if the record could not be loaded, i.e., the  key 
  17100.               did not match anything.
  17101.  
  17102.               Key  is a string variable or a string  constant  contain 
  17103.               the KEY to search for.
  17104.  
  17105.               _Copyfrom(dest,field#),  copies  a database field  to  a 
  17106.               destination variable so you can work with or display the 
  17107.               field.  The  database  field will be  CAST  to  fit  the 
  17108.               variables CLASS, if possible.
  17109.  
  17110.               In  other words, if field #3 contained 3456.99 and  dest 
  17111.               was  a INTEGER CLASS variable, 3456 would be  placed  in 
  17112.               dest.  To  successful CAST field 3, you  would  need  to 
  17113.               provide a REAL CLASS variable.
  17114.  
  17115.               If  field  3 contained "THE SYSOP" and dest was  a  LONG 
  17116.               CLASS  variable,  0  would be placed in  dest.  Field  3 
  17117.               contains  string  data and you should  have  provided  a 
  17118.               STRING CLASS variable to hold it.
  17119.  
  17120.               _Opendatabase(fname), opens the database pointed  to  by 
  17121.               fname, a STRING CONSTANT. Fname should contain the  full 
  17122.               drive,  path, and name of the database (minus  the  file 
  17123.               extension).
  17124.  
  17125.               E.g., OpenDataBase("C:\osiris\vetlink"); 
  17126.          Osiris SE         Technical Reference Manual        Page 291
  17127.  
  17128.  
  17129.               Opens  the  vetlink database located  in  the  directory 
  17130.               "C:\osiris".  The  files vetlink.dat,  vetlink.idx,  and 
  17131.               vetlink.dbs must be in that directory.
  17132.  
  17133.               _Closedatabase(), close the current database. Failure to 
  17134.               close  a  database prior to exiting a  command  file  or 
  17135.               before  opening  another  database  can  have  undefined 
  17136.               results.
  17137.  
  17138.               _Getnextrecord(rtcode), get the next available  database 
  17139.               record.  If another record is available, 1 is placed  in 
  17140.               rtcode.  If  no records are available, 0  is  placed  in 
  17141.               rtcode.  Rtcode  is  a user  defined  variable,  INTEGER 
  17142.               CLASS.
  17143.  
  17144.               _Settofirstrecord(),   positions  the  internal   record 
  17145.               pointer so the next call to GetNextRecord will  retrieve 
  17146.               the FIRST record in the database.
  17147.  
  17148.               _Deleterecord(rtcode,key),  deletes the database  record 
  17149.               pointed  to  by Key. Key is a STRING CLASS  variable  or 
  17150.               string constant. If the record was deleted, 1 is  placed 
  17151.               in  Rtcode,  an  INTEGER CLASS variable.  If  no  record 
  17152.               matched the KEY, 0 is placed in Rtcode.
  17153.  
  17154.               _Rewriterecord(),  saves  the  current  record  to   the 
  17155.               database. This function is generally used when you alter 
  17156.               a non-key field in a record and want the new field saved 
  17157.               to the database.
  17158.  
  17159.               _Copyto(field#,source), copies the contents of source to 
  17160.               the  database  field pointed to by Field#. The  data  in 
  17161.               source is CAST to fit the database field.
  17162.  
  17163.  
  17164.  
  17165.  
  17166.  
  17167.  
  17168.  
  17169.  
  17170.  
  17171.  
  17172.  
  17173.  
  17174.  
  17175.  
  17176.  
  17177.  
  17178.  
  17179.  
  17180.  
  17181.          Osiris SE         Technical Reference Manual        Page 292
  17182.  
  17183.               Summary
  17184.  
  17185.               _Define_var(name,class);
  17186.  
  17187.               name  : The name you have chosen to call this  variable.
  17188.  
  17189.               class:   A  variable needs to have its  CLASS  announced 
  17190.               when you define it.  SPL/I uses eight keywords to set up 
  17191.               data CLASSES:
  17192.  
  17193.                                     Integer 
  17194.                                Unsigned_Integer 
  17195.                                      Long 
  17196.                                  Unsigned_Long 
  17197.                                      Real 
  17198.                                    Character 
  17199.                                  String(size) 
  17200.                                      File
  17201.  
  17202.               Below  is a chart showing the different CLASSES and  the 
  17203.               values they can hold.
  17204.  
  17205.               CLASS                           Range 
  17206.               -------------------------------------------------------- 
  17207.               nteger                   -32768  to 32768 
  17208.               Unsigned_Integer               0 to 65535 
  17209.               Real Number              3.4E-38 to 1.7E+308 
  17210.               Character                ASCII 0 to ASCII 255 
  17211.               Long              -2,147,483,648 to 2,147,483,647 
  17212.               Unsigned_Long                  0 to 4,294,967,295 
  17213.               String   (*1)            ASCII 0 to ASCII 255 
  17214.               FILE  (*2)               Segment and offset address  of 
  17215.                                        file handle.
  17216.  
  17217.               *1  A  string must have its size declared,  the  maximum 
  17218.               number  of  characters it can hold.  For  all  practical 
  17219.               purposes, there is no limit on the size of a string.
  17220.  
  17221.               But, the bigger the string, the more memory it takes and 
  17222.               you  do have a limit on the memory SPL/I will allow  you 
  17223.               to use for variable storage. SPL/I will allow you to use 
  17224.               up to 40,000 bytes of heap space.
  17225.  
  17226.               Heap  is  the  memory, assigned to the program  by  DOS, 
  17227.               left  to the program after it has loaded  and  allocated 
  17228.               its own variables.
  17229.  
  17230.               You  COULD  create a string that can hold up  to  40,000 
  17231.               bytes,  but  that would use all of  your  variable  HEAP 
  17232.               space  and there isn't a whole lot you can do with  only 
  17233.               one variable.
  17234.  
  17235.  
  17236.          Osiris SE         Technical Reference Manual        Page 293
  17237.  
  17238.                                       Warning!
  17239.  
  17240.                    SPL/I,  in  most cases, does NOT check  the  string 
  17241.                    variable  to  see if it has enough space  to  store 
  17242.                    what  you're attempting to put in it. It is  up  to 
  17243.                    YOU  to  see that you don't put  something  into  a 
  17244.                    string that's to big to fit. This isn't unique, all 
  17245.                    programming languages leave it up to the programmer 
  17246.                    to do that type of grunt work.
  17247.  
  17248.                    Examples
  17249.  
  17250.                    _define_var(name,string(20))
  17251.  
  17252.                    _assign(name,"This string is way to long to fit!");
  17253.  
  17254.                    The results, undefined. By that I mean anything can 
  17255.                    happen.
  17256.  
  17257.               Example
  17258.  
  17259.               _define_var(name,String(80));
  17260.  
  17261.               Defines      a     variable     called      name      of 
  17262.               STRING     CLASS     with     a     maximum      storage 
  17263.               space is 80 characters.
  17264.  
  17265.               _define_var(sum,INTEGER);
  17266.  
  17267.               Defines a variable called sum with an INTEGER CLASS.
  17268.  
  17269.               _define_var(output,FILE);
  17270.  
  17271.               Defines a variable called output with a FILE CLASS.
  17272.  
  17273.                                           Tip
  17274.  
  17275.                    This  is  way I do in all my 'C' programs  and  I'm 
  17276.                    also  doing  it in my SPL/I programs  so  read  and 
  17277.                    learn:
  17278.  
  17279.                    Its  not  a  bad idea to setup a  couple  of  GRUNT 
  17280.                    INTEGER  variables  and a couple  of  80  character 
  17281.                    strings to handle repetitive tasks.
  17282.  
  17283.                    I generally always set-up two INTEGER variable  and 
  17284.                    I always call them x and y.
  17285.  
  17286.                    I don't use them for any specific purpose. But I do 
  17287.                    use  them in FOR loops, to hold return codes,  loop 
  17288.                    counters  (such  as  _++(x) and  _--(x),  and  just 
  17289.                    general work integers.
  17290.  
  17291.          Osiris SE         Technical Reference Manual        Page 294
  17292.  
  17293.                    By  predefining  a couple of  work  variables,  the 
  17294.                    program  can run faster because it doesn't have  to 
  17295.                    repeatedly allocate variables for repetitive tasks.
  17296.  
  17297.                    By using static names, I know by looking at my code 
  17298.                    that  those  variables can be safely used  for  the 
  17299.                    purposes I've outlined.
  17300.  
  17301.                    I  will also setup two string variables,  generally 
  17302.                    80  characters, and I almost always use  the  names 
  17303.                    junk1 and junk2.
  17304.  
  17305.                    I'll  also setup a CHARACTER variable and I  always 
  17306.                    call it CH.
  17307.  
  17308.                    By  predefining  those 5 variables, I know  I  will 
  17309.                    always have something to work with and the  program 
  17310.                    will   run  faster  because  it  doesn't  have   to 
  17311.                    repeatedly allocate and deallocate work space.
  17312.  
  17313.  
  17314.  
  17315.  
  17316.  
  17317.  
  17318.  
  17319.  
  17320.  
  17321.  
  17322.  
  17323.  
  17324.  
  17325.  
  17326.  
  17327.  
  17328.  
  17329.  
  17330.  
  17331.  
  17332.  
  17333.  
  17334.  
  17335.  
  17336.  
  17337.  
  17338.  
  17339.  
  17340.  
  17341.  
  17342.  
  17343.  
  17344.  
  17345.  
  17346.          Osiris SE         Technical Reference Manual        Page 295
  17347.  
  17348.               Summary
  17349.  
  17350.               _Display_memo_record(data_file,index_file,record_no.);
  17351.  
  17352.               data_file, 
  17353.               index_file : String constant 
  17354.               Record_no  : Integer constant
  17355.  
  17356.               Description
  17357.  
  17358.               Data_file contains the full drive, path, and filename to 
  17359.               the memo database.
  17360.  
  17361.               Index_file  contains the full drive, path, and  filename 
  17362.               to the memo index file.
  17363.  
  17364.               Record_NO  is the memo record number you want  displayed 
  17365.               to the caller.
  17366.  
  17367.               See  section  in  SE400 on Memo  databases  for  further 
  17368.               details.
  17369.  
  17370.               Example
  17371.  
  17372.               _display_memo_record("c:\add.dat","c:\add.idx",3);
  17373.  
  17374.               Displays  the 3rd memo record from the add database  and 
  17375.               uses  the add.idx file to find the location of  the  3rd 
  17376.               record.
  17377.  
  17378.  
  17379.  
  17380.  
  17381.  
  17382.  
  17383.  
  17384.  
  17385.  
  17386.  
  17387.  
  17388.  
  17389.  
  17390.  
  17391.  
  17392.  
  17393.  
  17394.  
  17395.  
  17396.  
  17397.  
  17398.  
  17399.  
  17400.  
  17401.          Osiris SE         Technical Reference Manual        Page 296
  17402.  
  17403.               Summary
  17404.  
  17405.               _Display_menu(cmds,fname);
  17406.  
  17407.               cmds   : String CONSTANT 
  17408.               fname  : A  user defined variable, STRING  CLASS  or  a 
  17409.                        string constant
  17410.  
  17411.               Description
  17412.  
  17413.               A   special   TYPE   of  _display_text()  function  that 
  17414.               allows  HOTKEYS  to interrupt  the display.  This  works 
  17415.               like  the displaying  of  a menu from within Osiris  and 
  17416.               when a caller  with HOTKEYS presses a valid menu option, 
  17417.               the menu will stop and Osiris processes the character.
  17418.  
  17419.               CMS  is  a  string of  UPPERCASE  characters   or   menu 
  17420.               options.
  17421.  
  17422.               FNAME is the name of the menu to display.
  17423.  
  17424.               Example
  17425.  
  17426.               _display_menu("ABCDEFG?","MSGAREA");
  17427.  
  17428.               Display     the   menu   MSGAREA.MMU/ANS/ASC   and    if 
  17429.               A,B,C,D,E,F,G,  or  ? is sent by the caller;  abort  the 
  17430.               display and proceed with the next command, generally  an 
  17431.               input prompt.
  17432.  
  17433.  
  17434.  
  17435.  
  17436.  
  17437.  
  17438.  
  17439.  
  17440.  
  17441.  
  17442.  
  17443.  
  17444.  
  17445.  
  17446.  
  17447.  
  17448.  
  17449.  
  17450.  
  17451.  
  17452.  
  17453.  
  17454.  
  17455.  
  17456.          Osiris SE         Technical Reference Manual        Page 297
  17457.  
  17458.               Summary
  17459.  
  17460.               _Display_text(filename);
  17461.  
  17462.               Filename  :  User defined, STRING CLASS, variable  or  a 
  17463.                            constant.
  17464.  
  17465.               Description
  17466.  
  17467.               This  function  calls the MMU system to display  a  text 
  17468.               file. This would be the fastest method of display  large 
  17469.               volumes of text that does not need formatting. Using the 
  17470.               MMU system would allow you to use the MMU color commands 
  17471.               and would allow the caller to break out of the display.
  17472.  
  17473.                                          Warning
  17474.  
  17475.                    Do  NOT under any circumstances use the MMU  script 
  17476.                    command  [RUN_PROGRAM] in ANY file you display  via 
  17477.                    the _display_text command. Your system will LOCKUP.
  17478.  
  17479.               Example
  17480.  
  17481.               _Define_Var(FILENAME,STRING(80)); 
  17482.               _ASSIGN(FILENAME,"C:\OSIRIS\USER.LOG"); 
  17483.               _DISPLAY_TEXT(FILENAME); 
  17484.               or 
  17485.               _DISPLAY_TEXT("C:\OSIRIS\USER.LOG");
  17486.  
  17487.  
  17488.  
  17489.  
  17490.  
  17491.  
  17492.  
  17493.  
  17494.  
  17495.  
  17496.  
  17497.  
  17498.  
  17499.  
  17500.  
  17501.  
  17502.  
  17503.  
  17504.  
  17505.  
  17506.  
  17507.  
  17508.  
  17509.  
  17510.  
  17511.          Osiris SE         Technical Reference Manual        Page 298
  17512.  
  17513.               Summary
  17514.  
  17515.               _Dorinfo(path,prog);
  17516.  
  17517.               path  : User defined variable, STRING CLASS or a  string 
  17518.                       constant. 
  17519.               prog  : User defined variable, STRING CLASS or a  string 
  17520.                       constant.
  17521.  
  17522.               Description
  17523.  
  17524.               This is used to create the RBBS/QuickBBS DORINFOx.DEF in 
  17525.               the directory pointed to by the PATH.
  17526.  
  17527.               PROG is the name  of the  external program, generally  a 
  17528.               batch  file used to  change into the directory  and  run 
  17529.               the program, to run.
  17530.  
  17531.  
  17532.               Example
  17533.  
  17534.               _dorinfo("c:\osiris\game2","runtw.bat");
  17535.  
  17536.               In  this  example, dorinfox.def will be written  in  the 
  17537.               sub-directory c:\osiris\game2 and the program  runtw.bat 
  17538.               will  then  be  executed. The extension  of  .bat  isn't 
  17539.               required, but it guarantees that runtw.exe or  runtw.com 
  17540.               isn't called by mistake.
  17541.  
  17542.  
  17543.  
  17544.  
  17545.  
  17546.  
  17547.  
  17548.  
  17549.  
  17550.  
  17551.  
  17552.  
  17553.  
  17554.  
  17555.  
  17556.  
  17557.  
  17558.  
  17559.  
  17560.  
  17561.  
  17562.  
  17563.  
  17564.  
  17565.  
  17566.          Osiris SE         Technical Reference Manual        Page 299
  17567.  
  17568.               Summary
  17569.  
  17570.               _Doorsys(path,prog);
  17571.  
  17572.               path  : User defined variable, STRING CLASS or a  string 
  17573.                       constant. 
  17574.               prog  : User defined variable, STRING CLASS or a  string 
  17575.                       constant.
  17576.  
  17577.               Description
  17578.  
  17579.               This  is  used  to create  DOOR.SYS  in   the  directory 
  17580.               pointed to by the PATH.
  17581.  
  17582.               PROG is the name  of the  external program, generally  a 
  17583.               batch  file used to  change into the directory  and  run 
  17584.               the program, to run.
  17585.  
  17586.  
  17587.               Example
  17588.  
  17589.               _doorsys("c:\osiris\game2","runtw.bat");
  17590.  
  17591.               In  this example, DOOR.SYS will be written in  the  sub- 
  17592.               directory c:\osiris\game2 and the program runtw.bat will 
  17593.               then be executed. The extension of .bat isn't  required, 
  17594.               but  it  guarantees that runtw.exe  or  runtw.com  isn't 
  17595.               called by mistake.
  17596.  
  17597.  
  17598.  
  17599.  
  17600.  
  17601.  
  17602.  
  17603.  
  17604.  
  17605.  
  17606.  
  17607.  
  17608.  
  17609.  
  17610.  
  17611.  
  17612.  
  17613.  
  17614.  
  17615.  
  17616.  
  17617.  
  17618.  
  17619.  
  17620.  
  17621.          Osiris SE         Technical Reference Manual        Page 300
  17622.  
  17623.               Summary
  17624.  
  17625.               _Elseif(expression......);
  17626.  
  17627.                     body1
  17628.  
  17629.               _Else;
  17630.  
  17631.                     body2
  17632.  
  17633.               _Eend;
  17634.  
  17635.               Description
  17636.  
  17637.               The   body   of  the  _elseif  statement   is   executed 
  17638.               selectively,  depending  on the value  of  'expression'. 
  17639.               First,  'expression'  is evaluated. If  'expression'  is 
  17640.               true,  body1 is executed. If the 'expression' is  false, 
  17641.               body2 of the _ELSEIF is executed.
  17642.  
  17643.  
  17644.               'expression'  is  a  sequences  of  TESTS  that  can  be 
  17645.               evaluated  to  either  TRUE  or  FALSE.  The  TESTS  are 
  17646.               identical to those available under the _IF function. See 
  17647.               section on _IF for further details.
  17648.  
  17649.               BODY1  and  BODY2  require  the  _ELSE  declaration   to 
  17650.               separate the two bodies.
  17651.  
  17652.  
  17653.  
  17654.  
  17655.  
  17656.  
  17657.  
  17658.  
  17659.  
  17660.  
  17661.  
  17662.  
  17663.  
  17664.  
  17665.  
  17666.  
  17667.  
  17668.  
  17669.  
  17670.  
  17671.  
  17672.  
  17673.  
  17674.  
  17675.  
  17676.          Osiris SE         Technical Reference Manual        Page 301
  17677.  
  17678.               Example
  17679.  
  17680.               The integer variable COW contains 10.
  17681.  
  17682.               First using _IF
  17683.  
  17684.               _IF(COW < 11);
  17685.  
  17686.                     _sprint("You don't have many cows do you?\n");
  17687.  
  17688.               _ENDIF;
  17689.  
  17690.               _IF(COW > 10);
  17691.  
  17692.                     _sprint("You have a LOT of cows!\n");
  17693.  
  17694.               _ENDIF;
  17695.  
  17696.               There isn't anything WRONG with this, it will work,  but 
  17697.               it does require TWO different evaluations, one for  each 
  17698.               if.  That doesn't take a LOT of time, but this  type  of 
  17699.               testing would benefit for _ELSEIF.
  17700.  
  17701.               The same program done with ELSEIF
  17702.  
  17703.               _ELSEIF(COW < 11);
  17704.  
  17705.                     _sprint("You don't have many cows do you?\n");
  17706.  
  17707.               _ELSE;
  17708.  
  17709.                     _sprint("You have a LOT of cows!\n");
  17710.  
  17711.               _EEND;
  17712.  
  17713.  
  17714.               Since  you're going to print one or the other, you  only 
  17715.               need  to  test  one of them. If it  fails,  then  you're 
  17716.               obviously going to print the other.
  17717.  
  17718.               Often  life  offers us more than two  choices.  You  can 
  17719.               extend  the elseif structure by NESTING multiple  ELSEIF 
  17720.               statements. It can get a little difficult to read, so be 
  17721.               careful  you don't go too deep. We've tested the  ELSEIF 
  17722.               nested 12 levels without running into any problems.
  17723.  
  17724.  
  17725.  
  17726.  
  17727.  
  17728.  
  17729.  
  17730.  
  17731.          Osiris SE         Technical Reference Manual        Page 302
  17732.  
  17733.               Example Of Nesting Elseif Statements.
  17734.  
  17735. _define_var(result,integer); 
  17736. _define_var(input,string(5)); 
  17737. _cls(); 
  17738. _sprint("Beginning Test\n"); 
  17739. _sprint("Select a number (1 or 2) ? "); 
  17740. _gets(input,1); 
  17741. _sprint("\n"); 
  17742. _atoi(result,input); 
  17743. _elseif(result = 1); 
  17744.     _sprint("You entered 1\n"); 
  17745.     _sprint("Select a number (1 or 2) ? "); 
  17746.     _gets(input,1); 
  17747.     _sprint("\n"); 
  17748.     _atoi(result,input); 
  17749.     _elseif(result = 2); 
  17750.          _sprint("This time you entered 2\n"); 
  17751.          _sprint("Select a number (1 or 2) ? "); 
  17752.          _gets(input,1); 
  17753.          _sprint("\n"); 
  17754.          _atoi(result,input); 
  17755.          _elseif(result = 1); 
  17756.               _sprint("This time you entered 1\n"); 
  17757.          _else; 
  17758.               _sprint("This time you entered 2\n"); 
  17759.          _eend; 
  17760.     _else; 
  17761.           _sprint("This time you entered 1\n"); 
  17762.     _eend; 
  17763. _else; 
  17764.      _sprint("You entered 2\n"); 
  17765.      _sprint("Select a number (1 or 2) ? "); 
  17766.      _gets(input,1); 
  17767.      _sprint("\n"); 
  17768.      _atoi(result,input); 
  17769.      _elseif(result = 2); 
  17770.          _sprint("This time you entered 2\n"); 
  17771.     _else; 
  17772.           _sprint("This time you entered 1\n"); 
  17773.     _eend; 
  17774. _eend;
  17775.  
  17776.  
  17777.  
  17778.  
  17779.  
  17780.  
  17781.  
  17782.  
  17783.  
  17784.  
  17785.  
  17786.          Osiris SE         Technical Reference Manual        Page 303
  17787.  
  17788.  
  17789.               Here is one nested 12 levels
  17790.  
  17791. _define_var(ch,character); 
  17792. _cls(); 
  17793. _sprint("Enter your selection (A-Z) ? "); 
  17794. _getc(ch,1); 
  17795. _sprint("\n");
  17796.  
  17797. _elseif( ch = 'A'); 
  17798.      _printf("CH = A\n"); 
  17799. _else; 
  17800.    _elseif( ch = 'B'); 
  17801.       _printf("CH = B\n"); 
  17802.    _else; 
  17803.       _elseif(ch = 'C'); 
  17804.         _printf("CH = C\n"); 
  17805.       _else; 
  17806.         _elseif(ch = 'D'); 
  17807.            _printf("CH = D\n"); 
  17808.         _else; 
  17809.            _elseif(ch = 'E'); 
  17810.               _printf("CH = E\n"); 
  17811.            _else; 
  17812.              _elseif(ch = 'F'); 
  17813.                _printf("CH = F\n"); 
  17814.              _else; 
  17815.                _elseif(ch = 'G'); 
  17816.                   _printf("CH = G\n"); 
  17817.                _else; 
  17818.                  _elseif(ch = 'H'); 
  17819.                   _printf("CH = H\n"); 
  17820.                  _else; 
  17821.                    _elseif(ch = 'I'); 
  17822.                      _printf("CH = I\n"); 
  17823.                    _else; 
  17824.                       _elseif(ch = 'J'); 
  17825.                          _printf("CH = J\n"); 
  17826.                       _else; 
  17827.                         _elseif(ch = 'K'); 
  17828.                             _printf("CH = K\n"); 
  17829.                         _else; 
  17830.                             _elseif(ch = 'L'); 
  17831.                                _printf("CH = L\n"); 
  17832.                             _else; 
  17833.                               _sprint("Not a valid selection\n"); 
  17834.                             _Eend; 
  17835.                         _Eend; 
  17836.                       _Eend; 
  17837.                    _Eend; 
  17838.                  _Eend; 
  17839.                _Eend; 
  17840.              _Eend; 
  17841.          Osiris SE         Technical Reference Manual        Page 304
  17842.  
  17843.  
  17844.            _Eend; 
  17845.         _Eend;
  17846.  
  17847.       _Eend; 
  17848.    _Eend; 
  17849. _Eend;
  17850.  
  17851.               It takes no more MEASURABLE time to reach the inner most 
  17852.               sprint statement than to read the 3rd printf  statement, 
  17853.               9 levels above.
  17854.  
  17855.               Many  will select this method for menus, but there is  a 
  17856.               better or rather easier approach (Next Page)
  17857.  
  17858.  
  17859.  
  17860.  
  17861.  
  17862.  
  17863.  
  17864.  
  17865.  
  17866.  
  17867.  
  17868.  
  17869.  
  17870.  
  17871.  
  17872.  
  17873.  
  17874.  
  17875.  
  17876.  
  17877.  
  17878.  
  17879.  
  17880.  
  17881.  
  17882.  
  17883.  
  17884.  
  17885.  
  17886.  
  17887.  
  17888.  
  17889.  
  17890.  
  17891.  
  17892.  
  17893.  
  17894.  
  17895.  
  17896.          Osiris SE         Technical Reference Manual        Page 305
  17897.  
  17898. _define_var(ch,character); 
  17899. _define_var(not_done,integer); 
  17900. _assign(not_done,1);
  17901.  
  17902. _while(not_done); 
  17903.   _cls();
  17904.  
  17905.   /* Display your menu here */
  17906.  
  17907.   _sprint("Please enter your selection ? "); 
  17908.   _getc(ch,1); 
  17909.   _sprint("\r                                       \r");
  17910.  
  17911.   _if(ch = 'Q'); 
  17912.     _sprint("Quit Requested.\n"); 
  17913.     _clear(not_done); 
  17914.     _getc(ch,0); 
  17915.     _continue; 
  17916.   _endif;
  17917.  
  17918.   _if(ch = 'A'); 
  17919.      _sprint("CH = A\n"); 
  17920.      _getc(ch,0); 
  17921.      _continue; 
  17922.   _endif;
  17923.  
  17924.   _if(ch = 'B'); 
  17925.      _sprint("CH = B\n"); 
  17926.      _getc(ch,0); 
  17927.      _continue; 
  17928.   _endif;
  17929.  
  17930.   _if(ch = 'C'); 
  17931.      _sprint("CH = C\n"); 
  17932.      _getc(ch,0); 
  17933.      _continue; 
  17934.   _endif;
  17935.  
  17936.   _if(ch = 'C'); 
  17937.      _sprint("CH = D\n"); 
  17938.      _continue; 
  17939.   _endif; 
  17940. _sprint("That is not a valid selection!\r"); 
  17941. _getc(ch,0); 
  17942. _sprint("                              \r"); 
  17943. _wend; 
  17944. _sprint("\rLine after WEND\n");
  17945.  
  17946.  
  17947.  
  17948.  
  17949.  
  17950.  
  17951.          Osiris SE         Technical Reference Manual        Page 306
  17952.  
  17953.               Here  we've used the while's CONTINUE statement to  skip 
  17954.               the  remaining lines in the body of the while  statement 
  17955.               once we've found a match.
  17956.  
  17957.               This  isn't any faster or slower than the nested  ELSEIF 
  17958.               tests, but given the number of nest levels it  bypasses, 
  17959.               it is a lot easier to read, and debug.
  17960.  
  17961.               Some  of  you will no doubt worry that the  a  statement 
  17962.               like:
  17963.  
  17964.               _if(access < 10); 
  17965.                                             
  17966.                The   body  of this if statement contains  5000   lines   
  17967.                of code. I'm not going to expand this document by  5000  
  17968.                lines. 
  17969.  
  17970.               _endif;
  17971.  
  17972.               If  the  program  is being executed from  the  disk,  an 
  17973.               instruction at a time, if the IF test fails . . .  there 
  17974.               would   be  a  noticeable  delay  as  the   next   5000+ 
  17975.               instructions were read from the disk and discarded.
  17976.  
  17977.               No,  there  is  no  delay. If the  IF  test  fails,  the 
  17978.               instruction  following  _ENDIF will be  executed  within 
  17979.               3/100ths of a second.
  17980.  
  17981.               I  can  do  this by using a  principle  known  as  base- 
  17982.               displacement addressing or explicit addressing. The idea 
  17983.               is  that within a program the relative positions of  any 
  17984.               two  statements  are fixed, such that  if  the  absolute 
  17985.               address of any one statement in the program were  known, 
  17986.               then   the   address  of  other  statements   could   be 
  17987.               calculated.  To  do this, I would compute  the  distance 
  17988.               between the statement whose absolute address is know and 
  17989.               the  one  who's address is to be  found.  The  distance, 
  17990.               measured in bytes, is call a displacement.
  17991.  
  17992.               ITlink has one advantage that most compiler do not have. 
  17993.               When  a  program, EXE or COM is compiled,  the  compiler 
  17994.               does  not  know  the  base  address  for  the   starting 
  17995.               instruction.  It  has  to leave the base  address  as  a 
  17996.               variable and do something like JUMP BASE_REGISTER+5.
  17997.  
  17998.               ITlink,  on the other hand, know exactly where the  base 
  17999.               address   is  going  to  be  so  I  can  calculate   the 
  18000.               displacement  address  during the compile and  enter  an 
  18001.               implicit  address instead of an explicit  address.  That 
  18002.               will  save the command processor a lot  of  computations 
  18003.               when a JMP instruction is needed.
  18004.  
  18005.  
  18006.          Osiris SE         Technical Reference Manual        Page 307
  18007.  
  18008.               Summary
  18009.  
  18010.               _Execute(memory,program,rtcode);
  18011.  
  18012.               memory  : An integer constant 
  18013.               program : A user defined variable, STRING CLASS  or  a 
  18014.                         string constant 
  18015.               rtcode  : A user defined variable, INTEGER CLASS.
  18016.  
  18017.               Description
  18018.  
  18019.               This  function enables you to run a DOS  command,  batch 
  18020.               file, or another program as a sub-task of your  program. 
  18021.               The  size  of  the program you can run  depends  on  the 
  18022.               amount of memory you have allocated to the program.  You 
  18023.               may allocate from 90K to 634K to the program. Attempting 
  18024.               to  allocate  LESS  than 90K  will  generally  lock  the 
  18025.               computer  when  the command processor attempts  to  load 
  18026.               command.com.  The amount of memory is specified  in  the 
  18027.               memory   argument,  an  integer  constant.  The   memory 
  18028.               argument REQUIRES an integer constant.
  18029.  
  18030.               The  program, DOS command, or batch file to  run,  along 
  18031.               with  any command line arguments that program may  need, 
  18032.               must be in the program argument. This argument may be  a 
  18033.               string constant or it can be a string variable.
  18034.  
  18035.               After  the program, batch file, or DOS command has  been 
  18036.               executed, the return code, if any, will be placed in the 
  18037.               variable RTCODE. RTCODE MUST be an integer variable.
  18038.  
  18039.                                    Quickbasic Brun.exe
  18040.  
  18041.                    Some  QUICKBASIC  Brun modules  conflict  with  the 
  18042.                    overlay cache. If you request 600K or more  memory, 
  18043.                    Osiris  will flush the overlay cache, free the  EMS 
  18044.                    or XMS memory allocated to the cache and then close 
  18045.                    the   Osiris.ovl   file   before   executing    the 
  18046.                    application.
  18047.  
  18048.                    When   you  return,  the  overlay  cache  will   be 
  18049.                    reallocated   and  the  Osiris.ovl  file  will   be 
  18050.                    reopened.
  18051.  
  18052.  
  18053.  
  18054.  
  18055.  
  18056.  
  18057.  
  18058.  
  18059.  
  18060.  
  18061.          Osiris SE         Technical Reference Manual        Page 308
  18062.  
  18063.  
  18064.               Example
  18065.  
  18066.               Lets suppose that you have just completed filling out  a 
  18067.               form  of some type and you want to store that form in  a 
  18068.               pkzip archive, encrypted with a password. You also  want 
  18069.               the  caller  to pick-out the name of  the  finished  zip 
  18070.               file.
  18071.  
  18072. _define_var(cmd_line,string(128)); 
  18073. _define_var(pwd,string(9)); 
  18074. _define_var(fname,string(13)); 
  18075. _define_var(len,integer); 
  18076. _define_var(rtcode,integer); 
  18077. _define_var(not_done,integer); 
  18078. _define_var(ch,character); 
  18079. _define_var(loop,integer);
  18080.  
  18081. _clear(len);
  18082.  
  18083. _while(len < 1);
  18084.  
  18085.     _cls(); 
  18086.     _sprint("Please Enter a Password ? "); 
  18087.     _gets(pwd,8); 
  18088.     _strlen(pwd,len); 
  18089.     _if(len < 1);
  18090.  
  18091.        _sprint("\n\nYou have to enter a Password.\n\n"); 
  18092.        _sprint("Press RETURN to Try Again.\n"); 
  18093.        _getc(ch,0);
  18094.  
  18095.     _endif;
  18096.  
  18097. _wend;
  18098.  
  18099. _cls(); 
  18100. _assign(not_done,1); 
  18101. _while(not_done); 
  18102. _clear(len);
  18103.  
  18104. _while(len < 1); 
  18105.     _cls(); 
  18106.     _sprint("Please Enter a Filename ? "); 
  18107.     _gets(fname,8); 
  18108.     _strlen(fname,len); 
  18109.     _if(len < 1); 
  18110.        _sprint("\n\nYou have to enter a filename.\n\n"); 
  18111.       _sprint("Press RETURN to Try Again.\n"); 
  18112.       _getc(ch,0);
  18113.  
  18114.  
  18115.  
  18116.          Osiris SE         Technical Reference Manual        Page 309
  18117.  
  18118.     _endif;
  18119.  
  18120.        _for(rtcode = 0 : < len : 1 );
  18121.  
  18122.           _copy_ch(ch,fname,rtcode); 
  18123.           _if(ch = '.'); 
  18124.              _cls(); 
  18125.              _sprint("'.' is not legal. *I'll* add the extension!\n"); 
  18126.              _clear(len); 
  18127.              _sprint("Press RETURN to Try Again.\n"); 
  18128.              _getc(ch,0); 
  18129.           _endif;
  18130.  
  18131.        _Fend; 
  18132. _wend;
  18133.  
  18134. _filexists(rtcode,fname);
  18135.  
  18136.   _if(rtcode);
  18137.  
  18138.        _cls(); 
  18139.       _printf("I'm sorry, '%s' already exists.\n",fname); 
  18140.       _sprint("Please select a new name.\n"); 
  18141.       _sprint("\nPress RETURN to continue.\n"); 
  18142.       _getc(ch,0);
  18143.  
  18144.  _endif;
  18145.  
  18146.    _if(rtcode = 0);
  18147.  
  18148.      _assign(not_done,0);
  18149.  
  18150.     _endif;
  18151.  
  18152. _wend;
  18153.  
  18154. _cls();
  18155.  
  18156. _sprint("Please stand by, archiving in progress . . . ");
  18157.  
  18158. _sprintf(cmd_line,"pkzip -m -ex -s%s %s form1.txt",pwd,fname);
  18159.  
  18160. _execute(256,cmd_line,rtcode);
  18161.  
  18162. _if(rtcode);
  18163.  
  18164.   _sprint("\n\nArchive failure. Please notify Sysop.\n\n"); 
  18165.   _unlink("form1.txt");
  18166.  
  18167. _endif;
  18168.  
  18169.  
  18170.  
  18171.          Osiris SE         Technical Reference Manual        Page 310
  18172.  
  18173.               Summary
  18174.  
  18175.               _Fclose(stream);
  18176.  
  18177.               stream  : A user defined variable, FILE CLASS, the  same 
  18178.                         variable used to open the file.
  18179.  
  18180.               Description
  18181.  
  18182.               The _fclose function closes the file pointed by  stream. 
  18183.               The  file buffer is flushed prior to  closing,  provided 
  18184.               the file was opened with "WRITE".
  18185.  
  18186.               Example
  18187.  
  18188.               _define_var(IN,FILE); 
  18189.               _fopen("c:\osiris\cbis1.log",IN,"read"); 
  18190.               _fclose(IN);
  18191.  
  18192.  
  18193.  
  18194.  
  18195.  
  18196.  
  18197.  
  18198.  
  18199.  
  18200.  
  18201.  
  18202.  
  18203.  
  18204.  
  18205.  
  18206.  
  18207.  
  18208.  
  18209.  
  18210.  
  18211.  
  18212.  
  18213.  
  18214.  
  18215.  
  18216.  
  18217.  
  18218.  
  18219.  
  18220.  
  18221.  
  18222.  
  18223.  
  18224.  
  18225.  
  18226.          Osiris SE         Technical Reference Manual        Page 311
  18227.  
  18228.               Summary
  18229.  
  18230.               _Fcloseall(value);
  18231.  
  18232.               value  : A user defined variable, INTEGER CLASS.
  18233.  
  18234.               Description
  18235.  
  18236.               The _Fcloseall function closes ALL open files. All  file 
  18237.               buffers are flushed prior to closing, provided the  file 
  18238.               was opened with "WRITE".
  18239.  
  18240.               You should use this function as a DEBUGGING aid prior to 
  18241.               exiting  a command file to determine if you have  failed 
  18242.               to close any open files.
  18243.  
  18244.               If _fcloseall has to close any open file, the number  of 
  18245.               files closed will be assigned to value.
  18246.  
  18247.               Example
  18248.  
  18249.  
  18250.          _define_var(OpenFiles, INTEGER);
  18251.  
  18252.          _FcloseAll(OpenFiles);
  18253.  
  18254.          _IF(OpenFiles);
  18255.  
  18256.          _CLS;
  18257.  
  18258.    _printf("\aE\aR\aR\aO\aR\a!\a!\a!\a\n\n"); 
  18259.    _printf("I screwed up and left %d Files Open.\n",OpenFiles); 
  18260.    _printf("\nI'd better check this out ASAP!\n\n");
  18261.  
  18262.           _ENDIF;
  18263.  
  18264.           _EXIT;
  18265.  
  18266.  
  18267.  
  18268.  
  18269.  
  18270.  
  18271.  
  18272.  
  18273.  
  18274.  
  18275.  
  18276.  
  18277.  
  18278.  
  18279.  
  18280.  
  18281.          Osiris SE         Technical Reference Manual        Page 312
  18282.  
  18283.               Summary
  18284.  
  18285.               _Fgets(string, N, Stream, Rtcode, Flag);
  18286.  
  18287.               string : A user defined variable, STRING CLASS. 
  18288.               n      : Number of characters to read. 
  18289.               stream : A user defined variable, FILE CLASS, the 
  18290.                        same variable used to open the file. 
  18291.               rtcode: A user defined variable, INTEGER CLASS 
  18292.               flag  : Integer CONSTANT
  18293.  
  18294.               Description
  18295.  
  18296.               The  _fgets functions reads a string from the  file  and 
  18297.               stores  it  in "string". Characters are  read  from  the 
  18298.               current file position up to and including the first new- 
  18299.               line character, up to the end of the file, or until  the 
  18300.               number  of  characters read is equal to  n-1,  whichever 
  18301.               comes first.
  18302.  
  18303.               The   result  is  stored  in  "string".
  18304.  
  18305.               FLAG  will  determine  whether  or  not  the  new   line 
  18306.               character, if read, will be place in the string. If flag 
  18307.               is  0,  the  new line character will be  placed  in  the 
  18308.               string.  If  FLAG is 1, the new line character  will  be 
  18309.               discarded.
  18310.  
  18311.               If  an error or end-of-file condition occurs, 0 will  be 
  18312.               placed in RTCODE. If RTCODE contains 1, characters  were 
  18313.               successful read from the file and placed in the string.
  18314.  
  18315.               Example
  18316.  
  18317.          _define_var(IN,FILE); 
  18318.          _define_var(input_string,string(80)); 
  18319.          _define_var(rtcode,integer);
  18320.  
  18321.          _fopen("c:\osiris\cbis1.log",IN,"read"); 
  18322.          _fgets(input_string,80,IN,rtcode,1);
  18323.  
  18324.          _ELSEIF(rtcode = 1);
  18325.  
  18326.             _printf("I just read ->%s<- from the file.\n",input_string);
  18327.  
  18328.          _ELSE;
  18329.  
  18330.             _printf("There was an error reading the file!\n");
  18331.  
  18332.          _EEND;
  18333.  
  18334.          _fclose(IN); 
  18335.  
  18336.          Osiris SE         Technical Reference Manual        Page 313
  18337.  
  18338.               Summary
  18339.  
  18340.               _Fildate(filename,y,m,d);
  18341.  
  18342.               Filename  : A user defined variable, STRING CLASS, or  a 
  18343.                           string constant.
  18344.  
  18345.               Y, 
  18346.               M, 
  18347.               D : User defined variables, INTEGER CLASS
  18348.  
  18349.               Description
  18350.  
  18351.               This function retrieves the a files DATE stamp in  YEAR, 
  18352.               MONTH, and DAY format and stores it in the user  defined 
  18353.               variables.
  18354.  
  18355.               The name of the file is retrieved from Filename.
  18356.  
  18357.               Example
  18358.  
  18359.          _DEFINE_VAR(Year,INTEGER); 
  18360.          _DEFINE_VAR(Month,INTEGER); 
  18361.          _DEFINE_VAR(Day,INTEGER);
  18362.  
  18363.  
  18364.          _PRINTF("The Files Date Stamp was : "); 
  18365.          _FILTIME("C:\OSIRIS\TIME.LOG",Year,Month,Day); 
  18366.          _PRINTF("%02d/%02d/%02d\n",Month,Day,Year);
  18367.  
  18368.               produces the output 
  18369.               The Files Time Stamp was : 02:23:46
  18370.  
  18371.  
  18372.  
  18373.  
  18374.  
  18375.  
  18376.  
  18377.  
  18378.  
  18379.  
  18380.  
  18381.  
  18382.  
  18383.  
  18384.  
  18385.  
  18386.  
  18387.  
  18388.  
  18389.  
  18390.  
  18391.          Osiris SE         Technical Reference Manual        Page 314
  18392.  
  18393.               Summary
  18394.  
  18395.               _File_command_access(cmd_number,rtcode);
  18396.  
  18397.               cmd_number  : Integer constant 
  18398.               rtcode      : User defined variable, INTEGER CLASS
  18399.  
  18400.               Description
  18401.  
  18402.  
  18403.               This  function checks for access to a  specific  primary 
  18404.               menu  command,  pointed to by cmd_number,  in   the 
  18405.               current  file area.
  18406.  
  18407.               If  you have access to the  command, access   level  and 
  18408.               access flags are checked, 1 is placed in rtcode. If  you 
  18409.               do  not  have  access to the command,  0  is  placed  in 
  18410.               rtcode.
  18411.  
  18412.  
  18413.               CMD_NUMBER is the number of the command:
  18414.  
  18415.               CMD_NUMBER      Function
  18416.  
  18417.  
  18418.               0               Change Area 
  18419.               1               Goodbye 
  18420.               2               Search 
  18421.               3               Upload 
  18422.               4               Download 
  18423.               6               View Archive Contents 
  18424.               8               Quick File List 
  18425.               9               Kill File 
  18426.               10              Full File List 
  18427.               11              Type a text file 
  18428.               12              Reset Protocol 
  18429.               13              Extract File From Archive 
  18430.               14              Search for new uploads 
  18431.               17              Your transfer stat's 
  18432.               18              Edit file queue
  18433.  
  18434.               Example
  18435.  
  18436.               _define_var(rtcode,integer); 
  18437.               _file_command_access(9,rtcode);
  18438.  
  18439.               _elseif(rtcode); 
  18440.                   _kill_file(); 
  18441.               _else; 
  18442.                  _printf("You can't kill a file!\n"); 
  18443.               _eend;
  18444.  
  18445.  
  18446.          Osiris SE         Technical Reference Manual        Page 315
  18447.  
  18448.               Summary
  18449.  
  18450.  
  18451.               _Filexists(rtcode,filename);
  18452.  
  18453.               FILENAME  : A user defined variable, STRING CLASS, or  a 
  18454.                           string constant.
  18455.  
  18456.               RETCODE  : A user defined variable, INTEGER CLASS.
  18457.  
  18458.               Description
  18459.  
  18460.               The function _FILEXISTS determines if the file,  defined 
  18461.               by FILENAME exists.
  18462.  
  18463.               If the file exists, 1 is placed in RETURN CODE. If  File 
  18464.               does NOT exist, 0 is placed in RETCODE.
  18465.  
  18466.               Example.
  18467.  
  18468.          _Define_Var(FileName,STRING(80)); 
  18469.          _Define_Var(RetCode,INTEGER);
  18470.  
  18471.          _ASSIGN(Filename,"C:\OSIRIS\OUT1.QBS");
  18472.  
  18473.          _FILEXISTS(RetCode,Filename);
  18474.  
  18475.          _ELSEIF(RetCode != 0);
  18476.  
  18477.              _PrintF("The File \"%s\" does exist.\n",Filename);
  18478.  
  18479.          _ELSE;
  18480.  
  18481.               _Printf("The file \"%s\" does NOT EXIST!\n",Filename);
  18482.  
  18483.          _EEND;
  18484.  
  18485.  
  18486.  
  18487.  
  18488.  
  18489.  
  18490.  
  18491.  
  18492.  
  18493.  
  18494.  
  18495.  
  18496.  
  18497.  
  18498.  
  18499.  
  18500.  
  18501.          Osiris SE         Technical Reference Manual        Page 316
  18502.  
  18503.               Summary
  18504.  
  18505.               _Filsize(filename,size);
  18506.  
  18507.               FILENAME  :  User defined variable, STRING CLASS,  or  a 
  18508.                            string constant.
  18509.  
  18510.               SIZE     : User defined variable, LONG CLASS.
  18511.  
  18512.  
  18513.               Description
  18514.  
  18515.               This  function,  _FILSIZE, places the size of  the  file 
  18516.               pointed to by Filename into the variable Size.
  18517.  
  18518.               This  function does NOT verify that the file exists,  it 
  18519.               just assumes that you have taken care of that.
  18520.  
  18521.               Size MUST be a variable with a LONG CLASS.
  18522.  
  18523.               Example
  18524.  
  18525.          _Define_Var(FileName,STRING(80)); 
  18526.          _Define_Var(RetCode,INTEGER); 
  18527.          _Define_Var(FileSize,LONG);
  18528.  
  18529.          _ASSIGN(Filename,"C:\OSIRIS\OUT1.QBS");
  18530.  
  18531.          _FILEXISTS(RetCode,Filename);
  18532.  
  18533.          _ELSEIF(RetCode != 0);
  18534.  
  18535.             _PrintF("The File \"%s\" does exist.\n",Filename); 
  18536.             _FILSIZE(Filename,FileSize); 
  18537.             _Printf("The size of the file was %l Bytes.\n",FileSize);
  18538.  
  18539.          _ELSE;
  18540.  
  18541.              _Printf("The file \"%s\" does NOT EXIST!\n",Filename);
  18542.  
  18543.          _EEND;
  18544.  
  18545.  
  18546.  
  18547.  
  18548.  
  18549.  
  18550.  
  18551.  
  18552.  
  18553.  
  18554.  
  18555.  
  18556.          Osiris SE         Technical Reference Manual        Page 317
  18557.  
  18558.               Summary
  18559.  
  18560.               _Filtime(filename,h,m,s);
  18561.  
  18562.               Filename  : A user defined variable, STRING CLASS, or  a 
  18563.                           string constant.
  18564.  
  18565.               H, 
  18566.               M, 
  18567.               S : User defined variables, INTEGER CLASS
  18568.  
  18569.               Description
  18570.  
  18571.               This function retrieves the a files TIME stamp in  HOUR, 
  18572.               MINUTE,  and  SECOND format and stores it  in  the  user 
  18573.               defined variables.
  18574.  
  18575.               The name of the file is retrieved from Filename.
  18576.  
  18577.               Example
  18578.  
  18579.          _DEFINE_VAR(HOUR,INTEGER); 
  18580.          _DEFINE_VAR(MINUTE,INTEGER); 
  18581.          _DEFINE_VAR(SECOND,INTEGER);
  18582.  
  18583.          _PRINTF("The Files Time Stamp was : "); 
  18584.          _FILTIME("C:\OSIRIS\TIME.LOG",HOUR,MINUTE,SECOND); 
  18585.          _PRINTF("%02d:%02d:%02d\n",HOUR,MINUTE,SECOND);
  18586.  
  18587.               produces the output
  18588.  
  18589.               The Files Time Stamp was : 02:23:46
  18590.  
  18591.               NOTES:  The  seconds  will always  be  an  even  number, 
  18592.               including zero, due to the method that DOS uses to store 
  18593.               the file's TIME parameter.
  18594.  
  18595.  
  18596.  
  18597.  
  18598.  
  18599.  
  18600.  
  18601.  
  18602.  
  18603.  
  18604.  
  18605.  
  18606.  
  18607.  
  18608.  
  18609.  
  18610.  
  18611.          Osiris SE         Technical Reference Manual        Page 318
  18612.  
  18613.               Summary
  18614.  
  18615.               _Fopen(path,variable,type);
  18616.  
  18617.               Description
  18618.  
  18619.               The  _fopen function opens the file specified  by  PATH. 
  18620.               The VARIABLE is a user defined variable FILE CLASS  that 
  18621.               will be used to reference this file by other SPL/I  file 
  18622.               functions.
  18623.  
  18624.               The  character string TYPE specifies the type of  access 
  18625.               requested for the file, as follows:
  18626.  
  18627.          Type      Description 
  18628.          ----------------------------------------------------------
  18629.  
  18630.          READ      Opens the file for reading. If the file  does  not 
  18631.                    exist  or  cannot be found, the _fopen  call  will 
  18632.                    fail.
  18633.  
  18634.          APPEND    Opens the file for writing at the end of the  file 
  18635.                    (appending). If the file does not exist, it will be 
  18636.                    created.
  18637.  
  18638.          WRITE     Opens an empty file for writing. If the given  file 
  18639.                    already exists, its contents will be destroyed.
  18640.  
  18641.               When a file is opened with APPEND, all write  operations 
  18642.               occur at the end of the file. Although the file  pointer 
  18643.               can be repositioned using _rewind, the file pointer will 
  18644.               always move back to the end of the file before any write 
  18645.               operation is carried out. Thus, existing data cannot  be 
  18646.               overwritten.
  18647.  
  18648.               Example
  18649.  
  18650.               _DEFINE_VAR(OUTPUT,FILE); 
  18651.               _FOPEN("C:\TEMP\-TMP.$$$",OUTPUT,WRITE); 
  18652.               _ELSEIF(OUTPUT); 
  18653.                  _fprintf(OUTPUT,"This is the first line.\n"); 
  18654.               _ELSE; 
  18655.                  _printf("Could not open the file!\n"); 
  18656.                _EEND; 
  18657.               _FCLOSE(OUTPUT);
  18658.  
  18659.  
  18660.  
  18661.  
  18662.  
  18663.  
  18664.  
  18665.  
  18666.          Osiris SE         Technical Reference Manual        Page 319
  18667.  
  18668.  
  18669.                                     Explanation
  18670.  
  18671.                    When  a  variable has been defined as  having  FILE 
  18672.                    CLASS, its value is set to NULL or ZERO. When  that 
  18673.                    variable  has been used to OPEN a file,  its  value 
  18674.                    contains  the  offset/segment address of  the  file 
  18675.                    handle, a NONE ZERO number.
  18676.  
  18677.                    Although you may not alter a variable that has been 
  18678.                    defined  as  having  a  FILE  CLASS,  you  can   do 
  18679.                    conditional tests with it.
  18680.  
  18681.                    The   _ELSEIF(OUTPUT)  is  a  classic  example   of 
  18682.                    conditional  TRUE/FALSE  testing. Anything  with  a 
  18683.                    value of 0 is considered to be false and would fail 
  18684.                    any conditional test.
  18685.  
  18686.                    If  the variable has any value other than 0, it  is 
  18687.                    considered   to   be  TRUE  and  would   PASS   any 
  18688.                    conditional test.
  18689.  
  18690.                                    Maximum Open Files
  18691.  
  18692.                    Although  SPL/I does not place any restrictions  on 
  18693.                    the number of files you may have open at once,  DOS 
  18694.                    does.
  18695.  
  18696.                    The maximum number of open files will be determined 
  18697.                    by the FILES= statement in your CONFIG.SYS.
  18698.  
  18699.  
  18700.  
  18701.  
  18702.  
  18703.  
  18704.  
  18705.  
  18706.  
  18707.  
  18708.  
  18709.  
  18710.  
  18711.  
  18712.  
  18713.  
  18714.  
  18715.  
  18716.  
  18717.  
  18718.  
  18719.  
  18720.  
  18721.          Osiris SE         Technical Reference Manual        Page 320
  18722.  
  18723.               Summary
  18724.  
  18725.               _For(start = Value : Condition End : Step); 
  18726.               _Fend;
  18727.  
  18728.               start  : User defined variable, INTEGER CLASS.
  18729.  
  18730.               value  : User defined variable, INTEGER CLASS or INTEGER 
  18731.                        constant.
  18732.  
  18733.               condition : Greater than sign or Less than sign; > or <.
  18734.  
  18735.               end    : User defined variable, INTEGER CLASS or INTEGER 
  18736.                        constant.
  18737.  
  18738.               step   : User defined variable, INTEGER CLASS or INTEGER 
  18739.                        constant.
  18740.  
  18741.               Description
  18742.  
  18743.               This function is commonly referred to as FOR NEXT and it 
  18744.               is  the fastest method of doing a control  loop  between 
  18745.               two fixed location.
  18746.  
  18747.               The  for  function requires a number of  arguments.  The 
  18748.               first  argument  is the variable to store  the  starting 
  18749.               value  in.  The second argument is  the  starting  value 
  18750.               itself,  generally  1  or 0 but any  value,  within  the 
  18751.               INTEGER CLASS, is allow. The 3rd argument is the TYPE of 
  18752.               conditional  test that determines when to end the  loop. 
  18753.               You  always  use  either the > or <  symbols.  The  test 
  18754.               symbols = and !=  do not make sense in a FOR/NEXT.
  18755.  
  18756.               The  4th  argument is the value to compare  the  current 
  18757.               value  of  start  with. This can be  a  variable  or  an 
  18758.               INTEGER  constant.  The final value is  the  step  rate, 
  18759.               generally 1 or -1.
  18760.  
  18761.  
  18762.  
  18763.  
  18764.  
  18765.  
  18766.  
  18767.  
  18768.  
  18769.  
  18770.  
  18771.  
  18772.  
  18773.  
  18774.  
  18775.  
  18776.          Osiris SE         Technical Reference Manual        Page 321
  18777.  
  18778.               The way it works:
  18779.  
  18780.               _define_var(x,integer); 
  18781.               _define_var(y,integer);
  18782.  
  18783.               _assign(y,20);
  18784.  
  18785.               _for(x = 1 : < y : 1);
  18786.  
  18787.                  _printf("x now equals : %d\n",x);
  18788.  
  18789.               _FEND;
  18790.  
  18791.               When the program hits the _for statement, it will assign 
  18792.               the value of 1 to the variable x, "x = 1". It will  then 
  18793.               test  it  to see if it is less than the y, "  <  y".  We 
  18794.               assigned  y the value of 20, " _assign(y,20) ",  so  the 
  18795.               test returns TRUE and the program enters the BODY of the 
  18796.               FOR/NEXT loop, the items between _for and _fend.
  18797.  
  18798.               _printf is executed.
  18799.  
  18800.               The  program  hits the _FEND and adds 1 to x. 1  is  the 
  18801.               step rate ": 1)". x now contains the value 2.
  18802.  
  18803.               Since _FEND was encountered, the program will cycle back 
  18804.               to the top and do the test "is x less than y". If it is, 
  18805.               the body of the loop will be executed again.
  18806.  
  18807.               This  will  continue until x < y is no longer  TRUE.  In 
  18808.               this case, the body of the function would be executed 19 
  18809.               times.
  18810.  
  18811.               The  step value does not have to be 1, it can be; 2,  5, 
  18812.               25, 124, etc, it can also be a negative number; -1,  -5, 
  18813.               -10, etc.
  18814.  
  18815.  
  18816.  
  18817.  
  18818.  
  18819.  
  18820.  
  18821.  
  18822.  
  18823.  
  18824.  
  18825.  
  18826.  
  18827.  
  18828.  
  18829.  
  18830.  
  18831.          Osiris SE         Technical Reference Manual        Page 322
  18832.  
  18833.          Example 1
  18834.  
  18835.   _define_var(row,integer); 
  18836.   _define_var(col,integer); 
  18837.   _define_var(ch,character); 
  18838.   _define_var(pattern,character); 
  18839.   _assign(pattern,'*'); 
  18840.   _cls();
  18841.  
  18842.  _for(row = 1 : < 13 : 1); 
  18843.       _locate(row,1); 
  18844.      _for(col = 1 : < 40 : 1); 
  18845.         _putc(pattern); 
  18846.     _FEND;
  18847.  
  18848.  _FEND;
  18849.  
  18850.  _for(row = 12 : > 0 : -1);
  18851.  
  18852.     _for(col = 80 : > 39 : -1); 
  18853.         _locate(row,col); 
  18854.         _putc(pattern); 
  18855.     _fend;
  18856.  
  18857.  _fend;
  18858.  
  18859.  
  18860.  _for(row = 1 : < 13 : 1);
  18861.  
  18862.     _locate(row,1);
  18863.  
  18864.    _for(col = 1 : < 40 : 1); 
  18865.          _putc(' '); 
  18866.     _FEND;
  18867.  
  18868.  _FEND; 
  18869.  _for(row = 12 : > 0 : -1);
  18870.  
  18871.     _for(col = 80 : > 39 : -1); 
  18872.         _locate(row,col); 
  18873.         _putc(' '); 
  18874.     _fend;
  18875.  
  18876.  _fend; 
  18877.  _locate(14,1);
  18878.  
  18879.               I'm not going to tell you what the program does, type it 
  18880.               in an run it.
  18881.  
  18882.  
  18883.  
  18884.  
  18885.  
  18886.          Osiris SE         Technical Reference Manual        Page 323
  18887.  
  18888.  
  18889.               Here is another example, a prime number generator,  that 
  18890.               uses _FOR as well as WHILE and IF.
  18891.  
  18892.               It will display all the prime numbers between 1 and 251.
  18893.  
  18894. _define_var(number,integer); 
  18895. _define_var(divisor,integer); 
  18896. _define_var(dummy,integer); 
  18897. _define_var(count,integer); 
  18898. _define_var(limit,integer); 
  18899. _assign(count,0); 
  18900. _assign(limit,251);
  18901.  
  18902. _for(number = 2 : < limit : 1);
  18903.  
  18904.    _assign(divisor,2);
  18905.  
  18906.    _math(dummy = number % divisor);
  18907.  
  18908.    _while(dummy);
  18909.  
  18910.      _++(divisor); 
  18911.      _math(dummy = number % divisor);
  18912.  
  18913.    _Wend;
  18914.  
  18915.   _if(divisor = number);
  18916.  
  18917.      _printf("%5d ",number); 
  18918.      _++(count); 
  18919.      _if(count > 9);
  18920.  
  18921.       _assign(count,0); 
  18922.       _printf("\n");
  18923.  
  18924.      _endif;
  18925.  
  18926.   _endif;
  18927.  
  18928. _FEND;
  18929.  
  18930.               The  approach  is quite straightforward but is  not  the 
  18931.               ultimate in efficiency. For example, if you are  testing 
  18932.               to  see  if  121 is prime, there is  no  need  to  check 
  18933.               divisors pass 11. If any divisor bigger than 11 went  in 
  18934.               evenly,  the  result of the division would be  a  number 
  18935.               smaller than 11, and that divisor would have been  found 
  18936.               earlier. Thus, we only need to check divisors up to  the 
  18937.               square root of the number, but the programming for  that 
  18938.               is  a bit trickier. I'll leave that as an  exercise  for 
  18939.               one of you clever readers to figure out.
  18940.  
  18941.          Osiris SE         Technical Reference Manual        Page 324
  18942.  
  18943.               Summary
  18944.  
  18945.               _Fprintf(file,format{,variable 1, Variable 2, .....});
  18946.  
  18947.               Description
  18948.  
  18949.               The  _fprintf  function formats and prints a  series  of 
  18950.               characters  and  values to a disk file,  pointed  to  by 
  18951.               file,    according   to   the    corresponding    format 
  18952.               specifications.
  18953.  
  18954.               The format is the same form and functions as the  format 
  18955.               argument  for  the  _printf function;  see  the  _printf 
  18956.               reference pages for description of format and variables.
  18957.  
  18958.               "file" is a user defined variable that has been declared 
  18959.               as having FILE CLASS.
  18960.  
  18961.               Before you can write to a file, it must first be OPENED; 
  18962.               see  the  _fopen  references pages  for  information  on 
  18963.               opening files.
  18964.  
  18965.               Example:
  18966.  
  18967. _fopen("TEST.OUT",OUTPUT,WRITE);
  18968.  
  18969. _fprintf(OUTPUT,"Hello %s!\nHow's the weather in %s?\n\n",NAME,CITY); 
  18970. _fprintf(OutPut,"You're current access level is %u\n\n",ACCESS);
  18971.  
  18972. _fclose(output);
  18973.  
  18974.  
  18975.  
  18976.  
  18977.  
  18978.  
  18979.  
  18980.  
  18981.  
  18982.  
  18983.  
  18984.  
  18985.  
  18986.  
  18987.  
  18988.  
  18989.  
  18990.  
  18991.  
  18992.  
  18993.  
  18994.  
  18995.  
  18996.          Osiris SE         Technical Reference Manual        Page 325
  18997.  
  18998.               Summary
  18999.  
  19000.               _Free_var(name);
  19001.  
  19002.               name : user defined variable.
  19003.  
  19004.               Description
  19005.  
  19006.               The  function _free_var frees the memory used  to  store 
  19007.               the variable back to the variable pool.
  19008.  
  19009.               Example
  19010.  
  19011.               _define_var(name,string(40)); 
  19012.               _assign_var(name,_NAME); 
  19013.               _printf("Your name is %s.\n",name); 
  19014.               _free_var(name);
  19015.  
  19016.  
  19017.  
  19018.  
  19019.  
  19020.  
  19021.  
  19022.  
  19023.  
  19024.  
  19025.  
  19026.  
  19027.  
  19028.  
  19029.  
  19030.  
  19031.  
  19032.  
  19033.  
  19034.  
  19035.  
  19036.  
  19037.  
  19038.  
  19039.  
  19040.  
  19041.  
  19042.  
  19043.  
  19044.  
  19045.  
  19046.  
  19047.  
  19048.  
  19049.  
  19050.  
  19051.          Osiris SE         Technical Reference Manual        Page 326
  19052.  
  19053.               Summary
  19054.  
  19055.               _Fscanf(return_code,stream,format{variables....});
  19056.  
  19057.               return_code   : A use defined variable, INTEGER CLASS;
  19058.  
  19059.               stream        : A user defined variable, FILE CLASS, the 
  19060.                               same variable that was used to OPEN  the 
  19061.                               file.
  19062.  
  19063.  
  19064.               The _fscanf function reads data from the file and stores 
  19065.               it  in  the variables. Each variable must  be  the  same 
  19066.               CLASS specified in format.
  19067.  
  19068.               Format  is  read left to right. When  the  first  format 
  19069.               specification  is  encountered, the value of  the  first 
  19070.               input  field  is  converted  and  stored  in  the  first 
  19071.               variable  according  to the format  specifications.  The 
  19072.               second  format  specification causes  the  second  input 
  19073.               field to be converted and stored in the second variable, 
  19074.               and  so  on.  If there are more  variables  than  format 
  19075.               specifications, the extra variables will be ignored.
  19076.  
  19077.               The  results  are  undefined if  there  are  not  enough 
  19078.               variables  for  all  the format  specifications  or  the 
  19079.               variable  isn't  the same as the CLASS  defined  in  the 
  19080.               format specification.
  19081.  
  19082.               If the format specification indicates a string field, it 
  19083.               is  your  responsibility to insure the string  is  large 
  19084.               enough  to hold that value assigned to it. If it  isn't, 
  19085.               the results are undefined.
  19086.  
  19087.               The  _fscanf  function  stores  the  number  of   fields 
  19088.               successfully  converted in return_code. If  end-of-file, 
  19089.               _fscanf stores -1 in return_code;
  19090.  
  19091.               A format specification has the following form:
  19092.  
  19093. %CLASS
  19094.  
  19095.  
  19096. CLASS       Description                  Range 
  19097. ----------------------------------------------------------- 
  19098. d           Integer                   -32768 to 32768 
  19099. u           Unsigned_Integer               0 to 65535 
  19100. r           Real Number (*1)         3.4E-38 to 1.7E+308 
  19101. c           Character                ASCII 0 to ASCII 255 
  19102. l           Long              -2,147,483,648 to 2,147,483,647 
  19103. x           Unsigned_Long                  0 to 4,294,967,295 
  19104. s           String   (*2)            ASCII 0 to ASCII 255 
  19105.  
  19106. .lm20
  19107.  
  19108.                                   File Field Delimiters
  19109.  
  19110.                    _FSCANF  uses two types of FILE  FIELD  DELIMITERS, 
  19111.                    blank   and  new-line.  A  FILE   FIELD   DELIMITER 
  19112.                    separates the fields stored in the file.
  19113.  
  19114.                    Example of FILE FIELD DELIMITING
  19115.  
  19116.                    The Sysop is 21. 
  19117.                       ^     ^  ^
  19118.  
  19119.                    This  string  would have four fields,  three  would 
  19120.                    require  string  format specifiers  and  the  forth 
  19121.                    could  be integer, signed, long, unsigned long,  or 
  19122.                    real,  depending on what you were going to  use  it 
  19123.                    for because it is small enough to fit in any of the 
  19124.                    data CLASSES that contain numbers.
  19125.  
  19126.                        v         v       v 
  19127.                    The     Sysop       is 
  19128.                    21.
  19129.  
  19130.                    Even thou this string has multiple blanks and spans 
  19131.                    two  physical  lines, it would be  treated  exactly 
  19132.                    like the prior string. Multiple blanks are  ignored 
  19133.                    and the new-line character would be the forth field 
  19134.                    delimiter.
  19135.  
  19136.  
  19137.  
  19138.  
  19139.  
  19140.  
  19141.  
  19142.  
  19143.  
  19144.  
  19145.  
  19146.  
  19147.  
  19148.  
  19149.  
  19150.  
  19151.  
  19152.  
  19153.  
  19154.  
  19155.  
  19156.  
  19157.  
  19158.  
  19159.  
  19160.  
  19161.  
  19162.          Osiris SE         Technical Reference Manual        Page 327
  19163.  
  19164.          Example
  19165.  
  19166.  
  19167.   _define_var(IN, FILE); 
  19168.   _define_var(FNAME, STRING(36)); 
  19169.   _define_var(LNAME, STRING(36)); 
  19170.   _define_var(AGE, INTEGER); 
  19171.   _define_var(Fields_Converted, INTEGER);
  19172.  
  19173.  
  19174.   _fopen("TEST.FILE,IN,"READ"); 
  19175.   _fscanf(Fields_Converted,in,"%s %s %d",Fname,Lname,Age);
  19176.  
  19177.   _Elseif(Fields_Converted != -1);
  19178.  
  19179.  
  19180.         _printf("Total Number of Fields Successfully "); 
  19181.         _printf("Converted : %d\n",Fields_Converted);
  19182.  
  19183.         _printf("The Twits First Name was : %s\n",fname); 
  19184.         _printf("The Twits Last Name was  : %s\n",lname); 
  19185.         _printf("He was %d years Old.\n",age);
  19186.  
  19187.   _ELSE;
  19188.  
  19189.        _printf("Error, End-Of-File Was Reached.\n");
  19190.  
  19191.   _EEND;
  19192.  
  19193.   _Fclose(in);
  19194.  
  19195.  
  19196.  
  19197.  
  19198.  
  19199.  
  19200.  
  19201.  
  19202.  
  19203.  
  19204.  
  19205.  
  19206.  
  19207.  
  19208.  
  19209.  
  19210.  
  19211.  
  19212.  
  19213.  
  19214.  
  19215.  
  19216.  
  19217.          Osiris SE         Technical Reference Manual        Page 328
  19218.  
  19219.               Summary
  19220.  
  19221.               _Get_ctrled_input(ch,cmds);
  19222.  
  19223.               ch    : A user defined variable, CHARACTER CLASS 
  19224.               cmds  : A string constant
  19225.  
  19226.               Description
  19227.  
  19228.               This  function  duplicates  the input  prompts  used  by 
  19229.               Osiris at the main, message, and file menus.
  19230.  
  19231.               CH  is  a  character variable used to  store  the  input 
  19232.               obtained   from   the   caller.   This   function   will 
  19233.               automatically force the response to UPPER CASE, i.e.,  a 
  19234.               will become A before you get it.
  19235.  
  19236.               Cmds  is  a  string constant containing a  list  of  the 
  19237.               command  keys that are accepted at the  current  moment. 
  19238.               Anything not in the cmds list will be ignored.
  19239.  
  19240.               Example
  19241.  
  19242.               _define_var(ch,character); 
  19243.               _get_ctrled_input(ch,"ABCDEDF/");
  19244.  
  19245.  
  19246.  
  19247.  
  19248.  
  19249.  
  19250.  
  19251.  
  19252.  
  19253.  
  19254.  
  19255.  
  19256.  
  19257.  
  19258.  
  19259.  
  19260.  
  19261.  
  19262.  
  19263.  
  19264.  
  19265.  
  19266.  
  19267.  
  19268.  
  19269.  
  19270.  
  19271.  
  19272.          Osiris SE         Technical Reference Manual        Page 329
  19273.  
  19274.               Summary
  19275.  
  19276.               _Getc(char,force_upper);
  19277.  
  19278.               char        : A user defined variable, CHARACTER  CLASS. 
  19279.               force_upper  : An INTEGER CONSTANT, 0 or 1.
  19280.  
  19281.               Description
  19282.  
  19283.               The  function getc obtains a 1 character  response  from 
  19284.               the caller or the local keyboard and stores it in char.
  19285.  
  19286.               If force_upper is turned on, 1, then the character  will 
  19287.               be stored in upper case format. The default is to  store 
  19288.               the character without altering it.
  19289.  
  19290.               In  other  words,  'a' is NOT the same as  'A'.  If  the 
  19291.               caller  types  'a'  and you are looking  for  'A',  menu 
  19292.               option,  this  lower case 'a' will NOT  match  during  a 
  19293.               conditional test.
  19294.  
  19295.               E.g.,
  19296.  
  19297.               _getc(ch,0);
  19298.  
  19299.               ch has 'a' in it.
  19300.  
  19301.               _IF(ch = 'A');
  19302.  
  19303.               will return FALSE.
  19304.  
  19305.  
  19306.               _getc(ch,1);  FORCES  the 'a' to 'A'. If it  is  already 
  19307.               'A', then it is left alone.
  19308.  
  19309.               This would allow you to use 'a-z' and 'A-Z' on the  same 
  19310.               menu, gives you twice as many options. It might be a tad 
  19311.               confusing to NEW users, but they would get use to it.
  19312.  
  19313.  
  19314.               Example
  19315.  
  19316.               _DEFINE_VAR(ch,character);
  19317.  
  19318.               _printf("Press A) or B) : "); 
  19319.               _getc(ch,0); 
  19320.               _printf("\nYou entered %c\n",ch);
  19321.  
  19322.  
  19323.  
  19324.  
  19325.  
  19326.  
  19327.          Osiris SE         Technical Reference Manual        Page 330
  19328.  
  19329.               Summary
  19330.  
  19331.               _Gets(str,len);
  19332.  
  19333.               str : A user defined variable, STRING CLASS. 
  19334.               len : An INTEGER CONSTANT.
  19335.  
  19336.               Description
  19337.  
  19338.               Gets  is used to obtain STRING input from the caller  or 
  19339.               local  keyboard. The number of characters the caller  is 
  19340.               allowed  to enter will be governed by the value of  len. 
  19341.               If  len is equal to 10, the caller may only enter up  to 
  19342.               10 characters, numbers, or what have you.
  19343.  
  19344.               WHAT  the caller entered will be placed in the  variable 
  19345.               str.
  19346.  
  19347.  
  19348.               Example
  19349.  
  19350.               _DEFINE_VAR(NAME,STRING(40)); 
  19351.               _printf("Please enter your name ? "); 
  19352.               _gets(name,36);
  19353.  
  19354.               _printf("\n\nYou entered : %s\n",name);
  19355.  
  19356.  
  19357.  
  19358.  
  19359.  
  19360.  
  19361.  
  19362.  
  19363.  
  19364.  
  19365.  
  19366.  
  19367.  
  19368.  
  19369.  
  19370.  
  19371.  
  19372.  
  19373.  
  19374.  
  19375.  
  19376.  
  19377.  
  19378.  
  19379.  
  19380.  
  19381.  
  19382.          Osiris SE         Technical Reference Manual        Page 331
  19383.  
  19384.               Summary
  19385.  
  19386.               _Global_download();
  19387.  
  19388.               Description
  19389.  
  19390.               This  gives  you access to the  download  system  within 
  19391.               Osiris  without  going through  the  normal  _download() 
  19392.               function.
  19393.  
  19394.               The  different between this function and  the  _download 
  19395.               function; Global_download() requires that you place  the 
  19396.               name  or  names of the files to be sent in  the  command 
  19397.               stacking Queue with the push_into_queue command (command 
  19398.               covered in another section of this document).
  19399.  
  19400.               Global_download does NOT retain the current contents  of 
  19401.               the file queue. In other words, it is cleared before the 
  19402.               new file names are inserted.
  19403.  
  19404.               All files pushed into the command stacking queue MUST be 
  19405.               listed  in  one of your file areas AND the  caller  must 
  19406.               have access TO that file area.
  19407.  
  19408.  
  19409.               Example
  19410.  
  19411.               _push_into_queue("I512?.ARJ"); 
  19412.               _global_download();
  19413.  
  19414.  
  19415.  
  19416.  
  19417.  
  19418.  
  19419.  
  19420.  
  19421.  
  19422.  
  19423.  
  19424.  
  19425.  
  19426.  
  19427.  
  19428.  
  19429.  
  19430.  
  19431.  
  19432.  
  19433.  
  19434.  
  19435.  
  19436.  
  19437.          Osiris SE         Technical Reference Manual        Page 332
  19438.  
  19439.  
  19440.               The  next 39 commands are Highlevel Commands that  allow 
  19441.               you  to  access certain built in Osiris  functions.  The 
  19442.               commands  are  fairly self explanatory, do  not  require 
  19443.               additional  arguments,  nor  do they  return  any  error 
  19444.               codes. If you are in doubt as to what a specific command 
  19445.               does,  throw  it into a test.prg file and  try  it.  You 
  19446.               can't hurt anything <smile>.
  19447.  
  19448.  
  19449.                              _Post_private_msg(); 
  19450.                              _Post_msg_to_sysop(); 
  19451.                            _Display_protocol_name(); 
  19452.                              _Goto_file_system(); 
  19453.                              _Goto_msg_system(); 
  19454.                              _Run_newmail_scan(); 
  19455.                             _Run_newuploads_scan(); 
  19456.                              _Goto_online_store(); 
  19457.                             _Show_who_is_online(); 
  19458.                                _Goto_log_off(); 
  19459.                            _Goto_display_version(); 
  19460.                             _Goto_status_system(); 
  19461.                                 _Page_sysop(); 
  19462.                          _Goto_adjust_user_settings(); 
  19463.                               _Display_callers(); 
  19464.                               _Goto_msg_center(); 
  19465.                              _Edit_conf_boards(); 
  19466.                              _Change_file_area(); 
  19467.                               _Search_for_file(); 
  19468.                                   _Upload(); 
  19469.                                _View_archive(); 
  19470.                               _Quick_file_list(); 
  19471.                               _Full_file_list(); 
  19472.                                  _Kill_file(); 
  19473.                               _Type_text_file(); 
  19474.                               _Select_protocol(); 
  19475.                                _Extract_file(); 
  19476.                               _Transfer_stats(); 
  19477.                                 _Edit_queue(); 
  19478.                                  _Download(); 
  19479.                               _Internode_chat(); 
  19480.                               _Read_bulletins(); 
  19481.                              _Private_mail_scan(); 
  19482.                              _New_bulletin_scan(); 
  19483.                              _Change_msg_areas(); 
  19484.                                _Enter_message(); 
  19485.                                _Read_messages(); 
  19486.                                _Pack_messages(); 
  19487.                                _Drop_carrier();
  19488.  
  19489.  
  19490.  
  19491.  
  19492.          Osiris SE         Technical Reference Manual        Page 333
  19493.  
  19494.               Do you want to create powerful, intelligent,  versatile, 
  19495.               and  useful  programs?  Then you need  a  language  that 
  19496.               provides  the  three  basic  forms  of  program   "flow" 
  19497.               control.  According  to computer science (which  is  the 
  19498.               science  of computers and not science by  computers  --- 
  19499.               yet),  a  good language should provide  three  forms  of 
  19500.               program flow:
  19501.  
  19502.               1. Executing a series of statements.
  19503.  
  19504.               2.  Repeating  a  sequence  of  statements  until   some 
  19505.               condition is    met.
  19506.  
  19507.               3. Using a test to decide between alternative actions.
  19508.  
  19509.               The first form we know, all SPL/I programs consists of a 
  19510.               sequence of statements. The WHILE loop is one example of 
  19511.               the  second  form.  The  final  form,  choosing  between 
  19512.               different  possible courses of action, makes  a  program 
  19513.               much more "intelligent".
  19514.  
  19515.  
  19516.               The _IF statement
  19517.  
  19518.               Summary
  19519.  
  19520.               _If(expression......);
  19521.  
  19522.               body
  19523.  
  19524.               _Endif;
  19525.  
  19526.               Description
  19527.  
  19528.               The  body of the _if statement is executed  selectively, 
  19529.               depending   on   the  value  of   'expression'.   First, 
  19530.               'expression' is evaluated. If 'expression' is true,  the 
  19531.               body is executed. If the 'expression' is false, the body 
  19532.               of the _IF statement is ignored.
  19533.  
  19534.               Each _IF must have a corresponding _ENDIF to mark  where 
  19535.               the body of the _IF ends.
  19536.  
  19537.               'expression'  is  a  sequences  of  TESTS  that  can  be 
  19538.               evaluated to either TRUE or FALSE.
  19539.  
  19540.  
  19541.  
  19542.  
  19543.  
  19544.  
  19545.  
  19546.  
  19547.          Osiris SE         Technical Reference Manual        Page 334
  19548.  
  19549.          TEST Symbol    FORM         Explanation 
  19550.          ---------------------------------------------------- 
  19551.           >        x > y        If the value or contents of x is 
  19552.                                 greater than the value of y, the 
  19553.                                 test would evaluate to TRUE, 
  19554.                                 otherwise it would evaluate to 
  19555.                                 FALSE.
  19556.  
  19557.           <        x < y        If the value or contents of x is 
  19558.                                 less then the value or contents 
  19559.                                 of y, the test would evaluate to 
  19560.                                 TRUE, otherwise it would evaluate 
  19561.                                 to FALSE.
  19562.  
  19563.           =        x = y        If the value or contents of x is 
  19564.                                 equal to the value or contents of 
  19565.                                 y, the test would evaluate to 
  19566.                                 TRUE, otherwise it would evaluate 
  19567.                                 to FALSE.
  19568.  
  19569.           !=       x != y       If the value or contents of x is NOT 
  19570.                                 equal to the value or contents of 
  19571.                                 y, the test would evaluate to 
  19572.                                 TRUE, otherwise it would evaluate 
  19573.                                 to FALSE.
  19574.  
  19575.  
  19576.               (*) x and y would be two variables or constants.
  19577.  
  19578.  
  19579.               You'll  notice there isn't a "greater than or equal  to" 
  19580.               or "less than or equal to" symbols, they aren't needed.
  19581.  
  19582.               For example:
  19583.  
  19584.               if( A >= 10)
  19585.  
  19586.               If contents of variable A is greater than or equal to 10 
  19587.               then do this.
  19588.  
  19589.               is EXACTLY the same as
  19590.  
  19591.               IF(A > 9)
  19592.  
  19593.               With  one major difference, (A > 9) is  executed  faster 
  19594.               because  it  is  a SINGLE test while  (A  >=  10)  would 
  19595.               require TWO tests.
  19596.  
  19597.  
  19598.               When one of the four basic tests is used in  expression, 
  19599.               you   may  use  either;  a  user  defined  variable,   a 
  19600.               predefined variable, or a constant on the left or  right 
  19601.               side of the test symbol. 
  19602.          Osiris SE         Technical Reference Manual        Page 335
  19603.  
  19604.               The two values being tested MUST be the same data CLASS. 
  19605.               If  the value on the left side of the test symbol is  an 
  19606.               INTEGER, the value on the right side of the test  symbol 
  19607.               must also be an INTEGER.
  19608.  
  19609.               If it isn't, the test will always produce FALSE. This is 
  19610.               due  to  the  way data is stored in  the  computer.  The 
  19611.               computer  uses different storage formats  for  different 
  19612.               data CLASSES.
  19613.  
  19614.               If one of the values is a constant and that constant  is 
  19615.               not a string or an integer, don't forget to include  the 
  19616.               CLASS  indicator, see section constants for  details  on 
  19617.               CLASS indicators.
  19618.  
  19619.               If  the  constant is a CHARACTER, the constant  must  be 
  19620.               start with ' and end with ', no spaces.
  19621.  
  19622.               E.g.,
  19623.  
  19624.               If  the  variable CH was defined as having  a  CHARACTER 
  19625.               CLASS and you wanted to test using a CHARACTER CONSTANT
  19626.  
  19627.               _IF(CH = 'A');
  19628.  
  19629.               or
  19630.  
  19631.               _IF('A' = CH);
  19632.  
  19633.               Both would produce the same results.
  19634.  
  19635.               _IF('A' = 'A');
  19636.  
  19637.               or
  19638.  
  19639.               _IF(CH = CH);
  19640.  
  19641.               is  valid, but doesn't make a lot of sense  because  the 
  19642.               tests will always evaluate TRUE.
  19643.  
  19644.               Example
  19645.  
  19646.               _Define_Var(Mike,String(80)); 
  19647.               _Define_Var(Bill,String(80));
  19648.  
  19649.               _Assign(Mike,"The Sysop"); 
  19650.               _Assign(Bill,"Sysop");
  19651.  
  19652.               I've  defined  two string variables that  may  hold  any 
  19653.               string up to 80 characters long. I've assigned the value 
  19654.               "The  Sysop"  to the variable Mike, and "Sysop"  to  the 
  19655.               variable Bill. 
  19656.  
  19657.          Osiris SE         Technical Reference Manual        Page 336
  19658.  
  19659.               _IF(Mike = Bill); 
  19660.                                                            
  19661.               _ENDIF;
  19662.  
  19663.               The  expression  would evaluate to  FALSE  because  Mike 
  19664.               contains  "The Sysop" and Bill contains  "Sysop".  Thus, 
  19665.               the two variables are NOT equal.
  19666.  
  19667.               Since the expression evaluated to FALSE, the body of the 
  19668.               _IF statement is ignored.
  19669.  
  19670.  
  19671.               _IF(_ACCESS > 10U);
  19672.  
  19673.               _ENDIF;
  19674.  
  19675.               The  variable  _ACCESS is an SPL/I  predefined  unsigned 
  19676.               integer variable that contains the callers access level. 
  19677.               10U  is a CONSTANT and the trailing U indicates that  it 
  19678.               is  an  unsigned integer. See section on  Constants  for 
  19679.               details.
  19680.  
  19681.               Here I'm wanting to know if the callers access level  is 
  19682.               greater than 10.
  19683.  
  19684.               If  the  value of _ACCESS is 20,  the  expression  would 
  19685.               evaluate TRUE and the body of the _IF statement would be 
  19686.               processed.
  19687.  
  19688.               If  the  value of _ACCESS was 5,  the  expression  would 
  19689.               evaluate  to  FALSE and the body of  the  _IF  statement 
  19690.               would be ignored.
  19691.  
  19692.               An  _IF statement may contain more than  one  expression 
  19693.               separated by either .AND. or .OR..
  19694.  
  19695.               _IF(_ACCESS > 20 .AND. _ACCESS < 30 .OR. _ACCESS = 10U); 
  19696.                                               
  19697.  
  19698.              _ENDIF;
  19699.  
  19700.               Multiple  expressions are evaluated from left  to  right 
  19701.               and  the  results  of the  current  evaluation  will  be 
  19702.               combined  with the results of the prior evaluation.  How 
  19703.               they  are  combined depends on the type  of  conditional 
  19704.               separator used. 
  19705.  
  19706.  
  19707.  
  19708.  
  19709.  
  19710.  
  19711.  
  19712.          Osiris SE         Technical Reference Manual        Page 337
  19713.  
  19714.               If  .AND. is used as the separator, the evaluation  will 
  19715.               only be TRUE if BOTH tests were TRUE.
  19716.  
  19717.               Example:
  19718.  
  19719.               _ACCESS > 10 .AND. _ACCESS < 30
  19720.  
  19721.               The  first expression, _ACCESS > 10, is  evaluated.  The 
  19722.               2nd expression, _ACCESS < 30, is evaluated.
  19723.  
  19724.               The  results are then compared and if BOTH evaluated  to 
  19725.               TRUE,  the expression "_ACCESS > 10 .AND. _ACCESS <  30" 
  19726.               would  evaluate  TRUE. If either or  both  evaluated  to 
  19727.               FALSE, the expression "_ACCESS > 10 .AND. _ACCESS <  30" 
  19728.               would also evaluate FALSE.
  19729.  
  19730.  
  19731.               If .OR. is used as the separator, the evaluation will be 
  19732.               TRUE if EITHER tests was TRUE.
  19733.  
  19734.               Example:
  19735.  
  19736.               _ACCESS > 10 .OR. _ACCESS < 30
  19737.  
  19738.               The  first expression, _ACCESS > 10, is  evaluated.  The 
  19739.               2nd expression, _ACCESS < 30, is evaluated.
  19740.  
  19741.               The  results are then compared and if  EITHER  evaluated 
  19742.               TRUE,  the expression "_ACCESS > 10 .OR.  _ACCESS  < 
  19743.               30" would evaluate TRUE.
  19744.  
  19745.               _IF(_ACCESS > 20 .AND. _ACCESS < 30 .OR. _ACCESS = 10U);
  19746.  
  19747.               The  first expression, "_ACCESS > 20" is evaluated.  The 
  19748.               2nd  expression,  "_ACCESS  < 30 is  evaluated  and  the 
  19749.               results are combined using the .AND.
  19750.  
  19751.               The  3rd  expression, "_ACCESS = 10U" is  evaluated  and 
  19752.               combined with the last evaluation.
  19753.  
  19754.  
  19755.  
  19756.  
  19757.  
  19758.  
  19759.  
  19760.  
  19761.  
  19762.  
  19763.  
  19764.  
  19765.  
  19766.  
  19767.          Osiris SE         Technical Reference Manual        Page 338
  19768.  
  19769.               Status Table Representing of
  19770.  
  19771.               _IF(_ACCESS > 20 .AND. _ACCESS < 30 .OR. _ACCESS = 10U);
  19772.  
  19773.               and assuming _ACCESS contained the value 10.
  19774.  
  19775.  
  19776.          Expression    Conditional Separator   Current Evaluation 
  19777.                                                Status 
  19778.          ----------------------------------------------------------- 
  19779.          _ACCESS > 20 ------------------------------> FALSE 
  19780.          _ACCESS < 30 ------------------------------> FALSE 
  19781.          _ACCESS = 10U -----------------------------> TRUE 
  19782.                                                                                                 | 
  19783.          The entire statement evaluates TRUE 
  19784.  
  19785.               Status Table Representing of
  19786.  
  19787.        _IF(_ACCESS  >  20  .AND. _ACCESS < 30  .OR.  _ACCESS  = 100U);
  19788.  
  19789.               and assuming _ACCESS contained the value 10.
  19790.  
  19791.  
  19792.          Expression    Conditional Separator   Current Evaluation 
  19793.                                                Status 
  19794.          ----------------------------------------------------------- 
  19795.          _ACCESS > 20 ------------------------------> FALSE 
  19796.          _ACCESS < 30 ------------------------------> FALSE
  19797.  
  19798.          _ACCESS = 100U ----------------------------> FALSE 
  19799.                                                                
  19800.          The entire statement evaluates FALSE
  19801.  
  19802.  
  19803.  
  19804.  
  19805.  
  19806.  
  19807.  
  19808.  
  19809.  
  19810.  
  19811.  
  19812.  
  19813.  
  19814.  
  19815.  
  19816.  
  19817.  
  19818.  
  19819.  
  19820.  
  19821.  
  19822.          Osiris SE         Technical Reference Manual        Page 339
  19823.  
  19824.          Status Table Representing of
  19825.  
  19826.          _IF(_ACCESS > 20 .AND. _ACCESS < 30 .OR. _ACCESS = 100U);
  19827.  
  19828.          and assuming _ACCESS contained the value 25.
  19829.  
  19830.  
  19831.          Expression    Conditional Separator   Current Evaluation 
  19832.                                                Status 
  19833.          ----------------------------------------------------------- 
  19834.          _ACCESS > 20 ------------------------------> TRUE 
  19835.          _ACCESS < 30 ------------------------------> TRUE 
  19836.          _ACCESS = 100U ----------------------------> FALSE 
  19837.  
  19838.          The entire statement evaluates TRUE
  19839.  
  19840.          Status Table Representing of
  19841.  
  19842.          _IF(_ACCESS > 20 .AND. _ACCESS = 30 .OR. _ACCESS = 100U);
  19843.  
  19844.          and assuming _ACCESS contained the value 25.
  19845.  
  19846.  
  19847.          Expression    Conditional Separator   Current Evaluation 
  19848.                                                Status 
  19849.          ---------------------------------------------------------- 
  19850.          _ACCESS > 20 ------------------------------> TRUE 
  19851.          _ACCESS = 30 ------------------------------> FALSE 
  19852.          _ACCESS = 100U ----------------------------> FALSE 
  19853.  
  19854.          The entire statement evaluates FALSE
  19855.  
  19856.  
  19857.               Although  _ACCESS  > 20 did produce a  TRUE  evaluation, 
  19858.               _ACCESS = 30 produced a FALSE evaluation and when  .AND. 
  19859.               is  used, BOTH have to evaluate TRUE for the  expression 
  19860.               to evaluate TRUE.
  19861.  
  19862.  
  19863.  
  19864.  
  19865.  
  19866.  
  19867.  
  19868.  
  19869.  
  19870.  
  19871.  
  19872.  
  19873.  
  19874.  
  19875.  
  19876.  
  19877.          Osiris SE         Technical Reference Manual        Page 340
  19878.  
  19879.                                          Nesting
  19880.  
  19881.                    SPL/I, unlike some programming Language, does offer 
  19882.                    a _ELSE IF statement, covered later, but SPL/I also 
  19883.                    supports multiple nested _IF statements.
  19884.  
  19885.          Example
  19886.  
  19887.          _IF(expression......); 
  19888.            _IF(expression......); 
  19889.             _IF(expression......); 
  19890.               _IF(expression......); 
  19891.               _ENDIF; 
  19892.             _ENDIF; 
  19893.            _ENDIF; 
  19894.          _ENDIF;
  19895.  
  19896.                    Using  nested _if statements can make your  program 
  19897.                    code  harder to follow, and debug, and if  a  while 
  19898.                    loop or an else if can be used instead of  nesting, 
  19899.                    do so.
  19900.  
  19901.                                          Trick!
  19902.  
  19903.                    _IF(_ACCESS);
  19904.  
  19905.                    What'll happen:
  19906.  
  19907.                    Since I only have one item to work with and no test 
  19908.                    symbols  to  tell  me how you want  to  test,  I'll 
  19909.                    evaluate the variable itself.
  19910.  
  19911.                    The variable _ACCESS will produce either a TRUE  or 
  19912.                    FALSE evaluation depending on it's contents. If the 
  19913.                    contents  is 0, then it will evaluate to FALSE.  If 
  19914.                    _ACCESS  has  any value other than  zero,  it  will 
  19915.                    evaluate TRUE.
  19916.  
  19917.                    String  variables will evaluate depending on  their 
  19918.                    contents. If a String is empty, it evaluates FALSE.
  19919.  
  19920.                    If the string contains ANYTHING, it evaluates TRUE.
  19921.  
  19922.                    This  can be used in a number of ways. Suppose  you 
  19923.                    get  string input from the caller and you  want  to 
  19924.                    know  if  he just pressed  RETURN  without  entered 
  19925.                    anything.
  19926.  
  19927.                    Assume  that filename is a string variable and  you 
  19928.                    just asked the caller to enter the name of the file 
  19929.                    to view.
  19930.  
  19931.  
  19932.          Osiris SE         Technical Reference Manual        Page 341
  19933.  
  19934.  
  19935.                    _ELSEIF(filename); 
  19936.                                                                                                                        _ELSE; 
  19937.                    _printf("Jerk, you have to enter something!\n\n"); 
  19938.                                                                                                    _EEND;
  19939.  
  19940.  
  19941.                    Suppose  you open a file for read and you  want  to 
  19942.                    display the contents of the file to the caller. You 
  19943.                    also  want to make sure you haven't mucked  up  and 
  19944.                    closed the file and forgotten about it so:
  19945.  
  19946.                    _IF(INPUT);
  19947.  
  19948.                       _ASSIGN(RTCODE,1); 
  19949.                       _WHILE(RTCODE);
  19950.  
  19951.                         _fgets(string,128,INPUT,RTCODE,0);
  19952.  
  19953.                        _if(RTCODE);
  19954.  
  19955.                           _printf("%s\n",string);
  19956.  
  19957.                        _ENDIF;
  19958.  
  19959.                       _WEND; 
  19960.                      _ENDIF;
  19961.  
  19962.                    You can do that because the variable FILE is set to 
  19963.                    NULL or zero when there is no OPEN file  associated 
  19964.                    with it.
  19965.  
  19966.  
  19967.  
  19968.  
  19969.  
  19970.  
  19971.  
  19972.  
  19973.  
  19974.  
  19975.  
  19976.  
  19977.  
  19978.  
  19979.  
  19980.  
  19981.  
  19982.  
  19983.  
  19984.  
  19985.  
  19986.  
  19987.          Osiris SE         Technical Reference Manual        Page 342
  19988.  
  19989.  
  19990.               Summary
  19991.  
  19992.               _Is_message_area_selected(area#, Rtcode);
  19993.  
  19994.               rtcode  : A user defined variable, INTEGER CLASS 
  19995.               Area#   : A user defined variable, INTEGER CLASS  or  an 
  19996.                         integer constant
  19997.  
  19998.               Description
  19999.  
  20000.               This  function places a 1 in  rtcode if the  caller  has 
  20001.               the conference area, pointed to by Area#. A 0 is  placed 
  20002.               in rtcode if the caller does NOT have the area selected.
  20003.  
  20004.               Example
  20005.  
  20006.               _define_var(returncode,Integer); 
  20007.               _is_message_area_selected(2,returncode);
  20008.  
  20009.               _elseif(returncode); 
  20010.                                            
  20011.                 _else;
  20012.  
  20013.                  _printf("You do not have that area selected!\n");
  20014.  
  20015.               _eend;
  20016.  
  20017.  
  20018.  
  20019.  
  20020.  
  20021.  
  20022.  
  20023.  
  20024.  
  20025.  
  20026.  
  20027.  
  20028.  
  20029.  
  20030.  
  20031.  
  20032.  
  20033.  
  20034.  
  20035.  
  20036.  
  20037.  
  20038.  
  20039.  
  20040.  
  20041.  
  20042.          Osiris SE         Technical Reference Manual        Page 343
  20043.  
  20044.               Summary
  20045.  
  20046.               _Locate(row,col);
  20047.  
  20048.               row, 
  20049.               col  : User defined variable, INTEGER CLASS, or  INTEGER 
  20050.                      constants.
  20051.  
  20052.               Description
  20053.  
  20054.               Positions  the  cursor on row and col. ANSI is  used  to 
  20055.               move the cursor.
  20056.  
  20057.               ANSI uses screen rows 1 - 25 and columns 1 - 80.
  20058.  
  20059.  
  20060.  
  20061.  
  20062.  
  20063.  
  20064.  
  20065.  
  20066.  
  20067.  
  20068.  
  20069.  
  20070.  
  20071.  
  20072.  
  20073.  
  20074.  
  20075.  
  20076.  
  20077.  
  20078.  
  20079.  
  20080.  
  20081.  
  20082.  
  20083.  
  20084.  
  20085.  
  20086.  
  20087.  
  20088.  
  20089.  
  20090.  
  20091.  
  20092.  
  20093.  
  20094.  
  20095.  
  20096.  
  20097.          Osiris SE         Technical Reference Manual        Page 344
  20098.  
  20099.               Summary
  20100.  
  20101.               _Main_command_access(cmd_number,rtcode);
  20102.  
  20103.               cmd_number  : Integer constant 
  20104.               rtcode      : User defined variable, INTEGER CLASS
  20105.  
  20106.               Description
  20107.  
  20108.               Checks  the  callers  access  level  and  command  flags 
  20109.               against  the  main   menu  COMMANDS pointed  to  by  the 
  20110.               CMD_NUMBER.  If  the caller  has access to the  command, 
  20111.               1  is  placed  in rtcode. If the caller  does  not  have 
  20112.               access to the command, 0 is placed in rtcode.
  20113.  
  20114.                CMD_NUMBER    Function
  20115.  
  20116.                 0         Conference Message Area 
  20117.                 1         File Areas 
  20118.                 2         Log off 
  20119.                 3         Your Personal Stat's 
  20120.                 4         Read Bulletins 
  20121.                 5         Page Sysop 
  20122.                 6         Change Settings 
  20123.                 7         User List 
  20124.                 8         Show Version 
  20125.                 9         On-line Store 
  20126.                10         Internode Chat 
  20127.                11         Message Center 
  20128.                12         Who Else is On0line 
  20129.                13         System Download 
  20130.                14         System Stat's
  20131.  
  20132.  
  20133.               Example
  20134.  
  20135.               _define_var(rtcode,integer); 
  20136.               _file_command_access(9,rtcode); 
  20137.               _elseif(rtcode); 
  20138.                  _printf("Going to the On-line store, stand by . . ."); 
  20139.               _else; 
  20140.                 _printf("You do not have access to the on-line store!.\n"); 
  20141.               _eend;
  20142.  
  20143.  
  20144.  
  20145.  
  20146.  
  20147.  
  20148.  
  20149.  
  20150.  
  20151.  
  20152.          Osiris SE         Technical Reference Manual        Page 345
  20153.  
  20154.               Summary
  20155.  
  20156.               _Make_mask(dest,source,mask);
  20157.  
  20158.               mask  : String constant 
  20159.               Source, 
  20160.               Dest   : A user defined variable, STRING CLASS
  20161.  
  20162.               Description
  20163.  
  20164.               This makes a copy of the source string and places it  in 
  20165.               the  format  specified  by the MASK. The new  string  is 
  20166.               placed in the variable dest.
  20167.  
  20168.               Dest,  where you want the end results of to  be  placed. 
  20169.               Source,  contains  the data to be converted.  Mask,  the 
  20170.               PICTURE  mask (See _masked_input for details on  a  mask 
  20171.               field and PICTURE characters).
  20172.  
  20173.               The original SOURCE is NOT altered.
  20174.  
  20175.               If the source string contained 3143346359  and the  mask 
  20176.               "(999)  999 - 9999" were used, the dest  variable  would 
  20177.               contain: (314) 334 - 6359
  20178.  
  20179.               If   there  is no data for the  PICTURE  character,  the 
  20180.               mask   is  longer   than   the   data   in  the   SOURCE 
  20181.               variable,  a   blank  space will  be added  to  pad  the 
  20182.               field.
  20183.  
  20184.               If   the  data does not match the PICTURE character,   a 
  20185.               blank space will be used.
  20186.  
  20187.               In  other  words, should SOURCE contain  31433A6359  and 
  20188.               the MASK was (999) 999-9999
  20189.  
  20190.               The   display  would  be  (314) 33  -6359.  The  "A"  is 
  20191.               not  inserted   because the PICTURE  for  that  position 
  20192.               REQUIRES  a number.
  20193.  
  20194.               Example
  20195.  
  20196.               _define_var(dest,string(80)); 
  20197.               _define_var(source,string(80)); 
  20198.               _assign(source,"494753999"); 
  20199.               _make_mask(dest,source,"999-99-9999"); 
  20200.               _printf("%s\n",dest); 
  20201.               output: 494-75-3999 
  20202.               _assign(source,"042767"); 
  20203.               _make_mask(dest,source,"99/99/99"); 
  20204.               _printf("%s\n",dest);
  20205.  
  20206.               output: 04/27/67
  20207.          Osiris SE         Technical Reference Manual        Page 346
  20208.  
  20209.  
  20210.               Summary
  20211.  
  20212.               _Masked_input(flag,s1,mask);
  20213.  
  20214.               flag : An integer constant, 0 or 1 
  20215.               s1   : A use defined variable, STRING CLASS 
  20216.               mask : A string constant
  20217.  
  20218.               Description
  20219.  
  20220.               Like   the  DBASE PICTURE command, this allows you    to 
  20221.               get input, from the caller, in a specific format.
  20222.  
  20223.               Flag, either 0 or 1, determines IF the caller MUST  fill 
  20224.               in  the entire mask. If 0, the caller does NOT  have  to 
  20225.               fill  in the entire mask. If set to 1, the  caller  MUST 
  20226.               fill the entire mask.
  20227.  
  20228.               S1 is the user defined string variable used to store the 
  20229.               input. No LENGTH checking is done and the variable  must 
  20230.               be large enough to hold what the caller entered.
  20231.  
  20232.               Mask is a string constant used to store the mask.
  20233.  
  20234.               Valid PICTURE symbols are : A  9  X
  20235.  
  20236.               A = Allow any letter between and including A - Z. 
  20237.               9 = Allow any number between and including 0 - 9. 
  20238.               X = Allow anything.
  20239.  
  20240.               All  other  character will be treated as  part  of   the 
  20241.               display mask and will simply be printed to the screen.
  20242.  
  20243.               The   input is stored in the S1 variable, but  the  mask 
  20244.               is NOT.
  20245.  
  20246.               In   other  words,  _masked_input(1,s1,"(999)  999-9999" 
  20247.               would  force  you to enter something like :
  20248.  
  20249.               (314) 334-6359.
  20250.  
  20251.               The     value    actually  stored  in   S1   would    be 
  20252.               3143346359.  This saves  space if the input is going  to 
  20253.               be  placed  in  a Database Field.
  20254.  
  20255.               _masked_input   will   COUNT  the  number   of   PICTURE 
  20256.               characters and limit input to that many characters.
  20257.  
  20258.               _masked_input(1,s1,"(999)  999-9999") would limit  input 
  20259.               to 10 digits.
  20260.  
  20261.  
  20262.          Osiris SE         Technical Reference Manual        Page 347
  20263.  
  20264.               Providing   the   caller   correctly   implements    the 
  20265.               Backspace  character, ASCII 8, the entire mask  and  the 
  20266.               number of  fields (shown as under score characters) will 
  20267.               be displayed.
  20268.  
  20269.          In  the  case of the above mask, the caller would  see 
  20270.          (___) ___-____ and would be positioned here --| 
  20271.           ^--------------------------------------------|
  20272.  
  20273.               If ASCII 8 is not correctly implemented then the  caller 
  20274.               will  only  see (_.  The rest of the mask will  then  be 
  20275.               displayed when needed.
  20276.  
  20277.               If  the  caller  backspaces to erase  a  character,  the 
  20278.               original  mask will be restored in place of  the  erased 
  20279.               character.
  20280.  
  20281.               E.g.,
  20282.  
  20283.               Original mask : (___) ___ - ____
  20284.  
  20285.               Caller typed :  (314) 334 - 34__ 
  20286.                                  ^ 
  20287.                Backspaces to     | 
  20288.                                  v 
  20289.                Results     :  (31_) ___ - ____
  20290.  
  20291.               Examples
  20292.  
  20293.               _masked_input(1,s1,"(999) 999 - 9999");
  20294.  
  20295.               Used to obtain a phone number.
  20296.  
  20297.               _masked_input(1,s1,"999-99-9999");
  20298.  
  20299.               Used to obtain a social security number.
  20300.  
  20301.               _masked_input(1,s1,"99/99/99");
  20302.  
  20303.               Used to obtain a date in MMDDYY format.
  20304.  
  20305.  
  20306.  
  20307.  
  20308.  
  20309.  
  20310.  
  20311.  
  20312.  
  20313.  
  20314.  
  20315.  
  20316.  
  20317.          Osiris SE         Technical Reference Manual        Page 348
  20318.  
  20319.               Summary
  20320.  
  20321.               _Math(results = Format);
  20322.  
  20323.               results  :  A user defined variable having  a  CLASS  of 
  20324.                           REAL,  INTEGER, UNSIGNED_INTEGER,  LONG,  or 
  20325.                           UNSIGNED_LONG
  20326.  
  20327.               format  : containing the math formula.
  20328.  
  20329.  
  20330.               Description
  20331.  
  20332.               The  function _math does arithmetic operations based  on 
  20333.               the contents of format.
  20334.  
  20335.               format  contains the arithmetic operations and  has  the 
  20336.               following format:
  20337.  
  20338.               <VALUE 1><SPACE><OPERATOR><SPACE><VALUE 2>
  20339.  
  20340.               VALUE 1   : A user defined variable or a constant. 
  20341.               <SPACE>   : A blank space to denote end of constant 
  20342.               <OPERATOR>: The arithmetic operation to perform.
  20343.  
  20344.               SPL/I supports the following arithmetic operator:
  20345.  
  20346.  
  20347.               +  {ADD} 
  20348.               -  {SUBTRACT} 
  20349.               *  {MULTIPLE} 
  20350.               /  {DIVIDE} 
  20351.               >> {Right Shift} 
  20352.               << {Left Shift} 
  20353.               OR {Bitwise OR} 
  20354.               AND {Bitwise AND} 
  20355.               XOR {Bitwise Exclusive OR} 
  20356.               %  {MODULUS}
  20357.  
  20358.  
  20359.               VALUE 2   : A user defined variable or a constant.
  20360.  
  20361.  
  20362.               The  ORDER  of  operation, which has  top  priority,  is 
  20363.               simple.  First  come, first serve. In 'C'  you  have  to 
  20364.               worry about the priority of the operators.
  20365.  
  20366.               I.e.,
  20367.  
  20368.               In  'C' result = 10 + 5 * 2 would give you 20 because  * 
  20369.               has a higher priority than + and 5 * 2 + 10 = 20, it  (C 
  20370.               compiler) rearranged your formula!
  20371.  
  20372.          Osiris SE         Technical Reference Manual        Page 349
  20373.  
  20374.               If you were thinking 10 + 5 * 2 = 30, you would not  end 
  20375.               up with what you were expecting or wanted.
  20376.  
  20377.               SPL/I  simplifies that a bit, by assigning  priority  in 
  20378.               the order you've defined the operations.
  20379.  
  20380.               E.g., result = 10 + 5 * 2 would give you 30.
  20381.  
  20382.               Example
  20383.  
  20384.               _MATH(TOTAL = cows + pigs + chickens); 
  20385.               _math(cows = 10 + 500 / 2 * 2);
  20386.  
  20387.                                       Restrictions
  20388.  
  20389.                    All  variables used within a math formula  have  to 
  20390.                    have  the  same  DATA  CLASS.  Constants  will   be 
  20391.                    converted  to the correct DATA CLASS.  The  correct 
  20392.                    DATA CLASS will be determined by the variable  used 
  20393.                    to store the results.
  20394.  
  20395.                    Only  user defined variables can be used in a  math 
  20396.                    formula. Predefined SPL/I variables may NOT be used 
  20397.                    in a math formula.
  20398.  
  20399.                    If  you NEED to switch the CLASS of a  variable  in 
  20400.                    order  to use it, use the _CAST function  prior  to 
  20401.                    calling the _MATH function.
  20402.  
  20403.                              Advanced Arithmetic Operations
  20404.  
  20405.                    You'll  notice  that  there  are  some  arithmetric 
  20406.                    operators that you may not have seen before:
  20407.  
  20408.                    >>   : Right Shift 
  20409.                    <<   : Left Shift 
  20410.                    OR   : Bitwise OR 
  20411.                    AND  : Bitwise AND 
  20412.                    XOR  : Bitwise Exclusive OR
  20413.  
  20414.  
  20415.                    because  they are generally used in computer  based 
  20416.                    math.
  20417.  
  20418.                              Bit Fiddling, Operators And Fields
  20419.  
  20420.                         Some  programs  need (or,  at  least,  benefit 
  20421.                         from) an ability to manipulate individual bits 
  20422.                         in a variable.
  20423.  
  20424.  
  20425.  
  20426.  
  20427.          Osiris SE         Technical Reference Manual        Page 350
  20428.  
  20429.                                           Operators
  20430.  
  20431.                         SPL/I  offers  bitwise logical  operators  and 
  20432.                         shift operators. In the following, I'll  write 
  20433.                         values  in binary notation so you can see  the 
  20434.                         mechanics.  In actual programs, you would  use 
  20435.                         integer,  unsigned  integers,  long,  unsigned 
  20436.                         long,  and  constants  written  in  the  usual 
  20437.                         forms.  For instances, instead of  (00011001), 
  20438.                         you would use 25. In my examples, I'll use  8- 
  20439.                         bit  numbers, with the bits numbered 7  to  0, 
  20440.                         left to right.
  20441.  
  20442.                                   Bitwise Logical Operators
  20443.  
  20444.                         The  three bitwise logical operators  work  on 
  20445.                         the   INTEGER  CLASS,  and  extended   INTEGER 
  20446.                         CLASSES (Unsigned_Integer, Long, and  Unsigned 
  20447.                         LONG). They are termed "bitwise" because  they 
  20448.                         operate  on each bit independently of the  bit 
  20449.                         on the left or right.
  20450.  
  20451.                                          Bitwise And
  20452.  
  20453.                         This   binary  operator  makes  a   bit-by-bit 
  20454.                         comparison between two operands. For each  bit 
  20455.                         position, the resulting bit is 1 only if  both 
  20456.                         corresponding  bits in the operands are 1.  In 
  20457.                         terms  of true-false, the result is true  only 
  20458.                         if each of the two bit operands is true. Thus,
  20459.  
  20460.                         10010011 AND 00111101 would equal 00010001
  20461.  
  20462.                         since  only  bits  4  and  0  are  1  in  both 
  20463.                         operands.
  20464.  
  20465.                         10010011 
  20466.                         00111101 
  20467.                         --------- 
  20468.                         00010001 
  20469.                                           Bitwise Or
  20470.  
  20471.                         This   binary  operator  makes  a   bit-by-bit 
  20472.                         comparison between two operands. For each  bit 
  20473.                         position, the resulting bit is 1 if either  of 
  20474.                         the  corresponding bits in the operands is  1. 
  20475.                         In terms of true-false, the result is true  if 
  20476.                         one  or the other bit operands are true or  if 
  20477.                         both are true. Thus
  20478.  
  20479.                         10010011 OR 00111101 would equal 10111111
  20480.  
  20481.  
  20482.          Osiris SE         Technical Reference Manual        Page 351
  20483.  
  20484.                                   Bitwise Exclusive Or: Xor
  20485.  
  20486.                         This   binary  operator  makes  a   bit-by-bit 
  20487.                         comparison between two operands. For each  bit 
  20488.                         position, the resulting bit is 1 if one or the 
  20489.                         other, but NOT both, of the corresponding bits 
  20490.                         in the operands is 1. In terms of  true-false, 
  20491.                         the  result  is true if one or the  other  bit 
  20492.                         operands, NOT BOTH, are true.
  20493.  
  20494.                         Thus,
  20495.  
  20496.                         10010011 XOR 00111101 would equal 10101110
  20497.  
  20498.                         10010011<---------- 
  20499.                         00111101<----------| 
  20500.                         --------           | 
  20501.                         10101110           | 
  20502.                                            | 
  20503.                         Since  bit  position 0 has the value of  1  in 
  20504.                         both  operands,  the resulting 0 bit  has  the 
  20505.                         value of 0. 
  20506.                                         Case Sensitive
  20507.  
  20508.                         The  arithmetric operators; OR, AND,  and  XOR 
  20509.                         are CASE SENSITIVE, or is NOT the same as  OR. 
  20510.                         Use   only   UPPER  CASE  with   these   three 
  20511.                         operators. 
  20512.                                             Usage
  20513.  
  20514.                         The  bitwise logical operators often are  used 
  20515.                         to  set  certain  bits  while  leaving  others 
  20516.                         unchanged.  For  example, suppose  we  have  a 
  20517.                         variable (unsigned integer) called MASK and it 
  20518.                         has  a value of 2, in binary that is  00000010 
  20519.                         with  only  bit number 1  being  nonzero.  The 
  20520.                         unsigned  integer variable flag has the  value 
  20521.                         of 15 (0001111).
  20522.  
  20523.                         The statement
  20524.  
  20525.                         _math(flag = flag AND MASK);
  20526.  
  20527.                         would  cause all the bits in flag, except  bit 
  20528.                         1, to be set to 0, since any bit combined with 
  20529.                         0 via the AND operator yields 0. Bit number  1 
  20530.                         will be left unchanged.
  20531.  
  20532.                         00001111 
  20533.                         00000010 
  20534.                         -------- 
  20535.                         00000010
  20536.  
  20537.          Osiris SE         Technical Reference Manual        Page 352
  20538.  
  20539.                         This is mostly commonly used to determine IF a 
  20540.                         bit is turned on.
  20541.  
  20542.                         _math(Flag = Flag OR MASK);
  20543.  
  20544.                         If mask contained 00000010 and flag  contained 
  20545.                         00001101 the results would be 
  20546.                                                     | 
  20547.                         00000010                    | 
  20548.                         00001101                    | 
  20549.                         ---------                   | 
  20550.                         00001111  <-----------------
  20551.  
  20552.                         Using the bitwise LOGICAL Operators does  mean 
  20553.                         you have to be able to convert base 10 numbers 
  20554.                         to base 2 in order to determine which bits are 
  20555.                         on or off for any given value.
  20556.  
  20557.                         Converting  between  number bases  isn't  that 
  20558.                         difficult, but if you don't want to learn .  . 
  20559.                                                  binary  and binary to base 10 conversions.  It 
  20560.                         should  also  be able to convert to  base  16, 
  20561.                         commonly called HEX notation.
  20562.  
  20563.                                    Bitwise Shift Operators
  20564.  
  20565.                         The bitwise shift operators shift bits to  the 
  20566.                         left  or  right.  Again,  I'll  write   binary 
  20567.                         numbers explicity  to show the mechanics.
  20568.  
  20569.                                         Left Shift: <<
  20570.  
  20571.                         This  operator  shifts the bits  of  the  left 
  20572.                         operand  to the left by the number  of  places 
  20573.                         given  by  the  right  operand.  The   vacated 
  20574.                         positions  are filled with 0s, and bits  moved 
  20575.                         past  the  end of the left operand  are  lost. 
  20576.                         Thus,
  20577.  
  20578.                         10001010 << 2 would equal 00101000 where  each 
  20579.                         bit is moved two places to the left.
  20580.  
  20581.  
  20582.  
  20583.  
  20584.  
  20585.  
  20586.  
  20587.  
  20588.  
  20589.  
  20590.  
  20591.  
  20592.          Osiris SE         Technical Reference Manual        Page 353
  20593.  
  20594.                                        Right Shift: >>
  20595.  
  20596.                         This  operator  shifts the bits  of  the  left 
  20597.                         operand  to the right by the number of  places 
  20598.                         given  by the right operand. Bits  moved  past 
  20599.                         the  right end of the left operand  are  lost.
  20600.  
  20601.                         For  UNSIGNED_INTEGER and  UNSIGNED_LONG,  the 
  20602.                         places vacated at the left end are replaced by 
  20603.                         0s.  For  INTEGER  and  LONG,  the  result  is 
  20604.                         machine  dependent. The vacated places may  be 
  20605.                         filled  with  0s, or they may be  filled  with 
  20606.                         copies  of  the  sign  bit.  For  an  UNSIGNED 
  20607.                         INTEGER, we have
  20608.  
  20609.                         10001010  >> 2 equals 00100010 where each  bit 
  20610.                         is moved two places to the right.
  20611.  
  20612.                                             Usage
  20613.  
  20614.                         The  bitwise  shift operators  provide  swift, 
  20615.                         efficient   multiplication  and  division   by 
  20616.                         powers of 2.
  20617.  
  20618.                         number << n  multiplies number by 2 to the nth 
  20619.                                      power. 
  20620.                         number  >> n  divides number by 2 to  the  nth 
  20621.                                      power if number is not negative.
  20622.  
  20623.                    Example
  20624.  
  20625.                    Osiris  stores a number of items in PACKED  fields, 
  20626.                    to conserve space, the callers original log on date 
  20627.                    and  the  TIME of day he last called are  two  such 
  20628.                    items.
  20629.  
  20630.                    If  you  were to simply PRINT those  numbers,  they 
  20631.                    would not APPEAR to be what they really  represent. 
  20632.                    The  DATE for instances, may print as 12456,  which 
  20633.                    doesn't mean a whole lot.
  20634.  
  20635.                    In  order  to UNPACK the date or time  fields  into 
  20636.                    hour, minute, second, year, month, and day  format, 
  20637.                    you have to use the bitwise operators.
  20638.  
  20639.  
  20640.  
  20641.  
  20642.  
  20643.  
  20644.  
  20645.  
  20646.  
  20647.          Osiris SE         Technical Reference Manual        Page 354
  20648.  
  20649.                    E.g.,
  20650.  
  20651.                    _DEFINE_VAR(YEAR,UNSIGNED_INTEGER); 
  20652.                    _DEFINE_VAR(MONTH,UNSIGNED_INTEGER); 
  20653.                    _DEFINE_VAR(DAY,UNSIGNED_INTEGER); 
  20654.                    _DEFINE_VAR(HOUR,UNSIGNED_INTEGER); 
  20655.                    _DEFINE_VAR(MIN,UNSIGNED_INTEGER); 
  20656.                    _DEFINE_VAR(SEC,UNSIGNED_INTEGER); 
  20657.                    _DEFINE_VAR(TIME,UNSIGNED_INTEGER); 
  20658.                    _DEFINE_VAR(ODATE,UNSIGNED_INTEGER); 
  20659.                    _ASSIGN(ODATE,_FDATE); 
  20660.                    _ASSIGN(TIME,_LTIME);
  20661.  
  20662.                    _MATH(DAY = ODATE << 11 >> 11); 
  20663.                    _MATH(MONTH = ODATE << 6 >> 11); 
  20664.                    _MATH(YEAR = ODATE >> 10 + 80);
  20665.  
  20666.                    _PRINTF("%02u/%02u/%02u\n",MONTH,DAY,YEAR);
  20667.  
  20668.                    _MATH(HOUR = TIME AND 63488 >> 11); 
  20669.                    _MATH(MIN = TIME AND 2016 >> 5); 
  20670.                    _MATH(SEC = TIME AND 31 * 2);
  20671.  
  20672.                    _PRINTF("%02u:%02u:%02u\n",HOUR,MIN,SEC);
  20673.  
  20674.                                      Modulus Operator: %
  20675.  
  20676.                        The   modulus  operator  is  used  in   integer 
  20677.                        arithmetic. It gives the remainder that results 
  20678.                        when the integer to the left is divided by  the 
  20679.                        integer to its right. For example, 13 % 5 (read 
  20680.                        as  "13 modulo 5") has the value of 3  since  5 
  20681.                        goes into 13 twice, with a remainder of 3.
  20682.  
  20683.                        Don't  bother trying to use this operator  with 
  20684.                        anything  other than an INTEGER, it just  won't 
  20685.                        work.
  20686.  
  20687.                        At  first glance, this operator may strike  you 
  20688.                        as  an  esoteric tool for  mathematicians,  but 
  20689.                        actually it is rather practical. One common use 
  20690.                        is  to help you control the flow of a  program. 
  20691.                        Suppose,  for example, you had a  program  that 
  20692.                        needed to do something extra every third month. 
  20693.                        Just have the program evaluate the month number 
  20694.                        modulo 3 (i.e., month % 3) and check to see  if 
  20695.                        the result is 0.
  20696.  
  20697.  
  20698.  
  20699.  
  20700.  
  20701.  
  20702.          Osiris SE         Technical Reference Manual        Page 355
  20703.  
  20704.               Summary
  20705.  
  20706.               _Msg_command_access(cmd_number,rtcode);
  20707.  
  20708.               cmd_number  : Integer constant 
  20709.               rtcode      : User defined variable, INTEGER CLASS
  20710.  
  20711.               Description
  20712.  
  20713.               Checks  to  see if you have access to the  message  area 
  20714.               command  indicated  by the CMD_NUMBER. If you do,  1  is 
  20715.               placed  in  rtcode.  If you do not have  access  to  the 
  20716.               command, 0 is placed in rtcode.
  20717.  
  20718.               CMD_NUMBER
  20719.  
  20720.                0         Change Areas 
  20721.                1         Goodbye 
  20722.                2         New Conference Mail Check 
  20723.                4         Enter New Message 
  20724.                6         Read Messages 
  20725.                7         Conference Menu 
  20726.               17         Message Center 
  20727.               18         Pack Messages
  20728.  
  20729.               Example
  20730.  
  20731.               _define_var(rtcode,integer); 
  20732.               _file_command_access(18,rtcode);
  20733.  
  20734.               _elseif(rtcode); 
  20735.                  _printf("Packing Messages, please stand by....); 
  20736.               _else; 
  20737.                  _printf("You do not have access to pack messages!.\n"); 
  20738.               _eend;
  20739.  
  20740.  
  20741.  
  20742.  
  20743.  
  20744.  
  20745.  
  20746.  
  20747.  
  20748.  
  20749.  
  20750.  
  20751.  
  20752.  
  20753.  
  20754.  
  20755.  
  20756.  
  20757.          Osiris SE         Technical Reference Manual        Page 356
  20758.  
  20759.               Summary
  20760.  
  20761.               _Printf(format{,variable 1, Variable 2, .....});
  20762.  
  20763.               Description
  20764.  
  20765.               The  _printf  function formats and prints  a  series  of 
  20766.               characters  and values to the serial port and the  local 
  20767.               display  screen.  The format, what you  want  to  print, 
  20768.               consists  of ordinary characters, escape sequences,  and 
  20769.               (if variables follow the format) format  specifications. 
  20770.               The format MUST begin with double quotes and it must END 
  20771.               with double quotes.
  20772.  
  20773.               Ordinary  characters  and escape  sequences  are  simply 
  20774.               copied to the serial port and the local display  screen. 
  20775.               For example, the line
  20776.  
  20777.               _printf("Line one\n\nLine two\n");
  20778.  
  20779.               produces the output
  20780.  
  20781.               Line one
  20782.  
  20783.               Line two
  20784.  
  20785.          Escape Sequences        Output 
  20786.          ------------------------------------------------------------- 
  20787.          \r                   Places cursor on First Column of Screen. 
  20788.          \n                   Starts a New Line 
  20789.          \a                   Rings the Bell
  20790.  
  20791.               Any character following the Escape Character, backslash, 
  20792.               that is not one of the defined escape sequences will  be 
  20793.               copied  to  the local display screen and to  the  serial 
  20794.               port.
  20795.  
  20796.               Examples
  20797.  
  20798.               _printf("LINE ONE"); 
  20799.               _printf("LINE TWO");
  20800.  
  20801.               Without  the escape sequence \n, the output produced  by 
  20802.               the prior two print statements would look like:
  20803.  
  20804.               LINE ONELINE TWO
  20805.  
  20806.               Including the \n
  20807.  
  20808.               _printf("LINE ONE\n"); 
  20809.               _printf("LINE TWO\n");
  20810.  
  20811.  
  20812.          Osiris SE         Technical Reference Manual        Page 357
  20813.  
  20814.               produces the output
  20815.  
  20816.               LINE ONE 
  20817.               LINE TWO
  20818.  
  20819.               Another  example  would be the percent sign.  Since  the 
  20820.               percent sign is part of the format specifications, using
  20821.  
  20822.               _printf("Results were 100%\n");
  20823.  
  20824.               would produce undefined results.
  20825.  
  20826.               The statement
  20827.  
  20828.               _printf("Results were 100\%\n");
  20829.  
  20830.               would produce the correct results, 100%.
  20831.  
  20832.               If  variables  or constants follow format,  then  format 
  20833.               must contain format specifications that determines where 
  20834.               and how the variables or constants will be displayed.
  20835.  
  20836.               Format  specifications,  discussed below,  always  begin 
  20837.               with a percent sign(%).
  20838.  
  20839.               Format  is  read left to right. When  the  first  format 
  20840.               specification (if any) is encountered, the value of  the 
  20841.               first variable or constant after format is converted and 
  20842.               displayed  according to the format  specifications.  The 
  20843.               second  format specification causes the second  variable 
  20844.               or constant to be converted and displayed, and so on. If 
  20845.               there  are  more  variables  or  constants  than  format 
  20846.               specifications, the extra variables or constants will be 
  20847.               ignored.
  20848.  
  20849.               The  results  are  undefined if  there  are  not  enough 
  20850.               variables    or   constants   for   all    the    format 
  20851.               specifications.
  20852.  
  20853.               A format specification has the following form:
  20854.  
  20855.               %{flags}{width}CLASS
  20856.  
  20857.          Flags     Meaning                    Default 
  20858.          ---------------------------------------------------------- 
  20859.           -         Left justify the result    Right justify 
  20860.                     within the given field 
  20861.                     width. This argument has 
  20862.                     no meaning unless  the 
  20863.                     width argument is also 
  20864.                     used.
  20865.  
  20866.  
  20867.          Osiris SE         Technical Reference Manual        Page 358
  20868.  
  20869.               The  width  argument is a non-negative  decimal  integer 
  20870.               controlling the minimum number of characters printed. If 
  20871.               the  number  of characters in the output value  is  less 
  20872.               than the specified width, blanks are added to the  right 
  20873.               of  the  values  (depending on whether  the  -  flag  is 
  20874.               specified) until the minimum width is reached. If  width 
  20875.               is prefixed with a 0, zeros are added until the  minimum 
  20876.               width  is  reached (not useful,  although  allowed,  for 
  20877.               left-justified numbers).
  20878.  
  20879.  
  20880.               The  width  specification  never causes a  value  to  be 
  20881.               truncated;  if  the number of characters in  the  output 
  20882.               value  is greater than the specified width, or width  is 
  20883.               not given, all characters of the value are printed.
  20884.  
  20885.  
  20886.          CLASS        Description                  Range 
  20887.          ----------------------------------------------------------- 
  20888.          d           Integer                   -32768 to 32768 
  20889.          u           Unsigned_Integer               0 to 65535 
  20890.          r           Real Number (*1)         3.4E-38 to 1.7E+308 
  20891.          c           Character                ASCII 0 to ASCII 255 
  20892.          l           Long              -2,147,483,648 to 2,147,483,647 
  20893.          x           Unsigned_Long                  0 to 4,294,967,295 
  20894.          s           String   (*2)            ASCII 0 to ASCII 255
  20895.  
  20896.               (*1)  Internally, Real number have 8 decimal  points  of 
  20897.               precision  but  only 2 decimal points will be  used  for 
  20898.               display purposes.
  20899.  
  20900.               (*2) A String is a collection of one or more  characters 
  20901.               linked together and referenced with one variable.
  20902.  
  20903.               Example of  a character :            A 
  20904.               Example of a string     :            This is a test.
  20905.  
  20906.  
  20907.  
  20908.  
  20909.  
  20910.  
  20911.  
  20912.  
  20913.  
  20914.  
  20915.  
  20916.  
  20917.  
  20918.  
  20919.  
  20920.  
  20921.  
  20922.          Osiris SE         Technical Reference Manual        Page 359
  20923.  
  20924.               _printf Examples :
  20925.  
  20926.               _printf("This is a string  : %s\n",string1); 
  20927.               _printf("This is a integer : %d\n",integer1); 
  20928.               _printf("This is a real    : %r\n",real1); 
  20929.               _printf("\n| %40s |\n",string2); 
  20930.               _printf("| %40s |\n\n",string3); 
  20931.               _printf("| %-40s |\n",string2); 
  20932.               _printf("| %-40s |\n\n",string3); 
  20933.               _printf("The time is %02d:%02d",hour,min); 
  20934.               _printf("\a\n%s\n","Press Return To Continue!"); 
  20935.               _printf("How's the weather in %s?\n",_CITY); 
  20936.               _printf("%d\n",_ACCESS); 
  20937.               _printf("Final Line of the output display.\n");
  20938.  
  20939.               Output   :
  20940.  
  20941.               This is a string  : Nice way to print isn't it? 
  20942.               This is a integer : 381 
  20943.               This is a real    : 1283.21 
  20944.               |                   This is a test String | 
  20945.               |                                     Hi! | 
  20946.               | This is a test String                   | 
  20947.               | Hi!                                     |
  20948.  
  20949.               The time is 02:44 
  20950.               Press Return To Continue! 
  20951.               How's the weather in Cape Girardeau, Mo.? 
  20952.               12 
  20953.               Final Line of the output display.
  20954.  
  20955.  
  20956.  
  20957.  
  20958.  
  20959.  
  20960.  
  20961.  
  20962.  
  20963.  
  20964.  
  20965.  
  20966.  
  20967.  
  20968.  
  20969.  
  20970.  
  20971.  
  20972.  
  20973.  
  20974.  
  20975.  
  20976.  
  20977.          Osiris SE         Technical Reference Manual        Page 360
  20978.  
  20979.               Summary
  20980.  
  20981.               _Push_into_queue(s1);
  20982.  
  20983.               s1  : A user defined variable, STRING CLASS or a  string 
  20984.                     constant.
  20985.  
  20986.               Description
  20987.  
  20988.               push_into_queue  takes the contents of s1 and places  it 
  20989.               in the Osiris command stacking queue.
  20990.  
  20991.               Example
  20992.  
  20993.               _push_into_queue("SE400?.ARJ"); 
  20994.               _global_download();
  20995.  
  20996.               Places the wild card file name SE400?.arj in the command 
  20997.               queue  and  calls the global  download  function.  Since 
  20998.               there is a file name in the queue, global download  will 
  20999.               not  ask for the name of the file to download,  it  will 
  21000.               pull it from the command queue.
  21001.  
  21002.  
  21003.  
  21004.  
  21005.  
  21006.  
  21007.  
  21008.  
  21009.  
  21010.  
  21011.  
  21012.  
  21013.  
  21014.  
  21015.  
  21016.  
  21017.  
  21018.  
  21019.  
  21020.  
  21021.  
  21022.  
  21023.  
  21024.  
  21025.  
  21026.  
  21027.  
  21028.  
  21029.  
  21030.  
  21031.  
  21032.          Osiris SE         Technical Reference Manual        Page 361
  21033.  
  21034.  
  21035.               Summary
  21036.  
  21037.               _Putc(ch);
  21038.  
  21039.               ch    : A user defined variable, CHARACTER CLASS,  or  a 
  21040.                       CHARACTER constant.
  21041.  
  21042.               Description
  21043.  
  21044.               The _putc function is a high speed, low overhead, method 
  21045.               of  printing a single character to the screen or  serial 
  21046.               port.
  21047.  
  21048.               Example
  21049.  
  21050.               See _COPY_CH for example on the possible uses of _putc.
  21051.  
  21052.  
  21053.  
  21054.  
  21055.  
  21056.  
  21057.  
  21058.  
  21059.  
  21060.  
  21061.  
  21062.  
  21063.  
  21064.  
  21065.  
  21066.  
  21067.  
  21068.  
  21069.  
  21070.  
  21071.  
  21072.  
  21073.  
  21074.  
  21075.  
  21076.  
  21077.  
  21078.  
  21079.  
  21080.  
  21081.  
  21082.  
  21083.  
  21084.  
  21085.  
  21086.  
  21087.          Osiris SE         Technical Reference Manual        Page 362
  21088.  
  21089.  
  21090.               Summary
  21091.  
  21092.               _Replace_ch(ch,string,position);
  21093.  
  21094.               ch       : A user defined variable, CHARACTER CLASS,  or 
  21095.                          a CHARACTER  constant. 
  21096.               string   : A user defined variable, STRING CLASS. 
  21097.               position : A user defined variable, INTEGER CLASS or  an 
  21098.                          Integer constant.
  21099.  
  21100.               Description
  21101.  
  21102.               _Replace_CH is a high speed function used to replace  an 
  21103.               individual  character in a string with the character  in 
  21104.               ch.
  21105.  
  21106.               The character to replace is pointed to by position.
  21107.  
  21108.               Keep  in mind that a STRING CLASS is actual made  up  of 
  21109.               individual CHARACTERS.
  21110.  
  21111.               The string
  21112.  
  21113.               SYSOP
  21114.  
  21115.               is  5  CHARACTERS  tied together  by  the  STRING  CLASS 
  21116.               declare. But, each individual character can be extracted 
  21117.               and worked with.
  21118.  
  21119.               SPL/I, even the C programming language, starts  labeling 
  21120.               individual  characters in a string with 0. That can,  at 
  21121.               times,  be confusing since we're use to starting  things 
  21122.               with a 1.
  21123.  
  21124.               SYSOP 
  21125.               01234
  21126.  
  21127.               Y has a position of 1, O has a position of 3.
  21128.  
  21129.               To replace Y  with * and assuming the variable was named 
  21130.               JOHN.
  21131.  
  21132.               _Replace_CH(*,JOHN,1);
  21133.  
  21134.               The  variable ch, CLASS CHARACTER, now has the  contents 
  21135.               of * and
  21136.  
  21137.              _printf("The 2nd character in your name is now %c\n",ch);
  21138.  
  21139.               would produce the output
  21140.  
  21141.               The 2nd character in your name is now * 
  21142.          Osiris SE         Technical Reference Manual        Page 363
  21143.  
  21144.               Summary
  21145.  
  21146.               _Rewind(file);
  21147.  
  21148.               file : A user defined variable, FILE CLASS
  21149.  
  21150.               Description
  21151.  
  21152.               This function repositions the file pointer to the  first 
  21153.               character  in  the  file. If the file  was  opened  with 
  21154.               WRITE,  the file pointer will AUTOMATICALLY go  back  to 
  21155.               the end of file if you attempt to write to it.
  21156.  
  21157.               Example
  21158.  
  21159.               _define_var(in,file); 
  21160.               _fopen("user.doc",in,read); 
  21161.                                                                                                               _rewind(in);
  21162.  
  21163.  
  21164.  
  21165.  
  21166.  
  21167.  
  21168.  
  21169.  
  21170.  
  21171.  
  21172.  
  21173.  
  21174.  
  21175.  
  21176.  
  21177.  
  21178.  
  21179.  
  21180.  
  21181.  
  21182.  
  21183.  
  21184.  
  21185.  
  21186.  
  21187.  
  21188.  
  21189.  
  21190.  
  21191.  
  21192.  
  21193.  
  21194.  
  21195.  
  21196.  
  21197.          Osiris SE         Technical Reference Manual        Page 364
  21198.  
  21199.  
  21200.               Summary
  21201.  
  21202.               _Send_file(rtcode,file);
  21203.  
  21204.               Rtcode  : A user defined variable, INTEGER CLASS 
  21205.               file    : A user defined variable, STRING  CLASS  or  a 
  21206.                         string constant.
  21207.  
  21208.               Description
  21209.  
  21210.               This function utilizes the internal Osiris file transfer 
  21211.               system  to  send the file pointed to by  'file'  to  the 
  21212.               caller.
  21213.  
  21214.               Send_file  is generally used to send special files  that 
  21215.               aren't   normally   found  in  one  of   your   download 
  21216.               directories.  The  file to send must be in  the  current 
  21217.               directory.  If it isn't, use the chdir command to  place 
  21218.               yourself  in the same directory, don't forget to  change 
  21219.               back after the transfer.
  21220.  
  21221.               The  status  of the transfer, successful or  failed,  is 
  21222.               placed  in  rtcode.  A  0  indicates  the  transfer  was 
  21223.               successful. Any other value indicates failure.
  21224.  
  21225.  
  21226.               Example
  21227.  
  21228.          _define_var(rtcode,integer);
  21229.  
  21230.          _assign(rtcode,1);
  21231.  
  21232.          _while(rtcode); 
  21233.          _send_file(rtcode,"c:\osiris\user.zip"); 
  21234.          _if(rtcode);
  21235.  
  21236.              /* Do something if the file wasn't downloaded */
  21237.  
  21238.          _endif;
  21239.  
  21240.          _wend;
  21241.  
  21242.  
  21243.  
  21244.  
  21245.  
  21246.  
  21247.  
  21248.  
  21249.  
  21250.  
  21251.  
  21252.          Osiris SE         Technical Reference Manual        Page 365
  21253.  
  21254.  
  21255.               Summary
  21256.  
  21257.               _Setdisplay(type);
  21258.  
  21259.               type  : An integer constant, 0 or 1
  21260.  
  21261.               Description
  21262.  
  21263.  
  21264.               The Osiris default display screen is 22x80 with the  top 
  21265.               line showing serial port information and the bottom  two 
  21266.               lines showing user information.
  21267.  
  21268.               When  Osiris runs a SPL/I command file, the  display  is 
  21269.               set to 25x80, in case WINDOWS are used.
  21270.  
  21271.               In some cases, autoexec.prg, you may want to switch  the 
  21272.               22x80 information display back-on.
  21273.  
  21274.               _setdisplay(type) lets you decide which display you want 
  21275.               to  use. If type is 0, the display will switch to  22x80 
  21276.               information.  If type is 1, the display will  switch  to 
  21277.               25x80 (the default for a SPL/I command file).
  21278.  
  21279.               E.g.,
  21280.  
  21281.               _setdisplay(0);
  21282.  
  21283.               Set to 22x80.
  21284.  
  21285.               _setdisplay(1);
  21286.  
  21287.               Set to 25x80.
  21288.  
  21289.               If you are going to use windows, the display MUST be  in 
  21290.               25x80 mode.
  21291.  
  21292.  
  21293.  
  21294.  
  21295.  
  21296.  
  21297.  
  21298.  
  21299.  
  21300.  
  21301.  
  21302.  
  21303.  
  21304.  
  21305.  
  21306.  
  21307.          Osiris SE         Technical Reference Manual        Page 366
  21308.  
  21309.               Summary
  21310.  
  21311.               _Set_file_area(area);
  21312.  
  21313.               area  :  A user defined variable, INTEGER CLASS,  or  an 
  21314.                        integer constant.
  21315.  
  21316.  
  21317.               Description
  21318.  
  21319.  
  21320.               This  allows you to force a change to a new  file  area. 
  21321.               The  area  to change to is taken from the  variable,  or 
  21322.               constant, area.
  21323.  
  21324.               This  function does NOT check to see if the  caller  has 
  21325.               access to the area.
  21326.  
  21327.               Example
  21328.  
  21329.               _set_file_area(10);
  21330.  
  21331.               Forces a file area change to area NO. 10.
  21332.  
  21333.               _set_file_area(newarea);
  21334.  
  21335.               Forces  a  file area change to the  area  NO.  contained 
  21336.               within the integer variable "newarea".
  21337.  
  21338.  
  21339.  
  21340.  
  21341.  
  21342.  
  21343.  
  21344.  
  21345.  
  21346.  
  21347.  
  21348.  
  21349.  
  21350.  
  21351.  
  21352.  
  21353.  
  21354.  
  21355.  
  21356.  
  21357.  
  21358.  
  21359.  
  21360.  
  21361.  
  21362.          Osiris SE         Technical Reference Manual        Page 367
  21363.  
  21364.               Summary
  21365.  
  21366.               _Set_node_status(status);
  21367.  
  21368.               status : An INTEGER constant
  21369.  
  21370.               Description
  21371.  
  21372.               Allows   you  to set the node status display (who's  on- 
  21373.               line)  from  within   a   command  file.  The  following 
  21374.               integer constants may be used to indicate the status  of 
  21375.               the caller.
  21376.  
  21377.  
  21378.               1 = Transferring a File 
  21379.               2 = Unavailable for CHAT 
  21380.               3 = In External Program 
  21381.               4 = Available For CHAT
  21382.  
  21383.               If  you change the status, be sure to change it back  to 
  21384.               its original state, generally 4.
  21385.  
  21386.  
  21387.               Example
  21388.  
  21389.               _set_node_status(3);
  21390.  
  21391.  
  21392.  
  21393.  
  21394.  
  21395.  
  21396.  
  21397.  
  21398.  
  21399.  
  21400.  
  21401.  
  21402.  
  21403.  
  21404.  
  21405.  
  21406.  
  21407.  
  21408.  
  21409.  
  21410.  
  21411.  
  21412.  
  21413.  
  21414.  
  21415.  
  21416.  
  21417.          Osiris SE         Technical Reference Manual        Page 368
  21418.  
  21419.               Summary
  21420.  
  21421.               _Set_msg_area(area);
  21422.  
  21423.               area  :  A user defined variable, INTEGER CLASS,  or  an 
  21424.               integer constant.
  21425.  
  21426.               Description
  21427.  
  21428.               This  allows you to force a change to a  new  conference 
  21429.               area. The area to change to is taken from the  variable, 
  21430.               or constant, area.
  21431.  
  21432.               This  function does NOT check to see if the  caller  has 
  21433.               access to the area.
  21434.  
  21435.               Example
  21436.  
  21437.               _set_msg_area(10);
  21438.  
  21439.               Forces a conference area change to area NO. 10.
  21440.  
  21441.               _set_msg_area(newarea);
  21442.  
  21443.               Forces  a  conference  area  change  to  the  area   NO. 
  21444.               contained within the integer variable "newarea".
  21445.  
  21446.  
  21447.  
  21448.  
  21449.  
  21450.  
  21451.  
  21452.  
  21453.  
  21454.  
  21455.  
  21456.  
  21457.  
  21458.  
  21459.  
  21460.  
  21461.  
  21462.  
  21463.  
  21464.  
  21465.  
  21466.  
  21467.  
  21468.  
  21469.  
  21470.  
  21471.  
  21472.          Osiris SE         Technical Reference Manual        Page 369
  21473.  
  21474.  
  21475.               Summary
  21476.  
  21477.               _Setcmdkey(string);
  21478.  
  21479.               string   : A string CONSTANT
  21480.  
  21481.  
  21482.               Description
  21483.  
  21484.               _setcmdkey  lets you switch to a new language  cmds  key 
  21485.               file, the default is cmds.key.
  21486.  
  21487.               _setcmdkey  requires  a string constant  containing  the 
  21488.               full drive, path, and file name of the new file.
  21489.  
  21490.               E.g.,
  21491.  
  21492.               _setcmdkey("C:\osiris\German.key"); 
  21493.               _setcmdkey("C:\osiris\FRENCH.key");
  21494.  
  21495.  
  21496.  
  21497.  
  21498.  
  21499.  
  21500.  
  21501.  
  21502.  
  21503.  
  21504.  
  21505.  
  21506.  
  21507.  
  21508.  
  21509.  
  21510.  
  21511.  
  21512.  
  21513.  
  21514.  
  21515.  
  21516.  
  21517.  
  21518.  
  21519.  
  21520.  
  21521.  
  21522.  
  21523.  
  21524.  
  21525.  
  21526.  
  21527.          Osiris SE         Technical Reference Manual        Page 370
  21528.  
  21529.  
  21530.               Summary
  21531.  
  21532.               _Setlangname(string);
  21533.  
  21534.               string   : A string CONSTANT
  21535.  
  21536.  
  21537.               Description
  21538.  
  21539.               _setlangname lets you switch to a new language database, 
  21540.               the default database is cmds.dat.
  21541.  
  21542.               _setlangname  requires a string constant containing  the 
  21543.               full drive, path, and file name of the new database.
  21544.  
  21545.               E.g.,
  21546.  
  21547.               _setlangname("C:\osiris\German.Dat"); 
  21548.               _setlangname("C:\osiris\FRENCH.DAT");
  21549.  
  21550.  
  21551.  
  21552.  
  21553.  
  21554.  
  21555.  
  21556.  
  21557.  
  21558.  
  21559.  
  21560.  
  21561.  
  21562.  
  21563.  
  21564.  
  21565.  
  21566.  
  21567.  
  21568.  
  21569.  
  21570.  
  21571.  
  21572.  
  21573.  
  21574.  
  21575.  
  21576.  
  21577.  
  21578.  
  21579.  
  21580.  
  21581.  
  21582.          Osiris SE         Technical Reference Manual        Page 371
  21583.  
  21584.  
  21585.               Summary
  21586.  
  21587.               _Setmenupath(string);
  21588.  
  21589.               string   : A string CONSTANT
  21590.  
  21591.  
  21592.               Description
  21593.  
  21594.  
  21595.               _setmenupath lets you change to a different  MMU/ASC/PRG 
  21596.               subdirectory.
  21597.  
  21598.               _setmenupath  requires a string constant containing  the 
  21599.               full  drive and path to the new subdirectory.  The  path 
  21600.               MUST end with a backslash, \.
  21601.  
  21602.               E.g.,
  21603.  
  21604.               _setmenupath("E:\MENU\"); 
  21605.               _setmenupath("E:\menu\german\");
  21606.  
  21607.               Notice that each of the paths ended with '\'.
  21608.  
  21609.               You  might use this in conjunction with _setlangname  to 
  21610.               switch your menus to a new language whenever you  switch 
  21611.               the language database.
  21612.  
  21613.  
  21614.  
  21615.  
  21616.  
  21617.  
  21618.  
  21619.  
  21620.  
  21621.  
  21622.  
  21623.  
  21624.  
  21625.  
  21626.  
  21627.  
  21628.  
  21629.  
  21630.  
  21631.  
  21632.  
  21633.  
  21634.  
  21635.  
  21636.  
  21637.          Osiris SE         Technical Reference Manual        Page 372
  21638.  
  21639.               Summary
  21640.  
  21641.               _Spawn(program);
  21642.  
  21643.               PROGRAM  :  A string variable or string constant.
  21644.  
  21645.               Description
  21646.  
  21647.               The  _spawn function allows you to execute  other  SPL/I 
  21648.               command  files  from  the  current  command  file.  This 
  21649.               function  should  be  used sparingly  and  primarily  IN  
  21650.               command  files that act as centralized menu  system  for  
  21651.               multiple command files.
  21652.  
  21653.  
  21654.               Example
  21655.  
  21656.               _if(ch = 'A'); 
  21657.                 _spawn("C:\osiris\prgs\infomall.prg"); 
  21658.               _endif;
  21659.  
  21660.                                          Warning
  21661.  
  21662.                    To give you as much variable space as possible  for 
  21663.                    the child program, the variable table's pushed onto 
  21664.                    the stack and then popped back off when you return.
  21665.  
  21666.                    But,  you  WILL  lose the contents  of  any  string 
  21667.                    variable you may have defined. The variable  itself 
  21668.                    will be restored but the contents cannot be.
  21669.  
  21670.                    This ONLY applies to string variables. The contents 
  21671.                    of  the  other  variables  will  be  restored.
  21672.  
  21673.                    If you have a string variable and you want to  SAVE 
  21674.                    the  contents,  create  a disk file  and  save  the 
  21675.                    contents  of  the variable with  fprintf  and  then 
  21676.                    restore  it  after you return from the  child  with 
  21677.                    fgets.
  21678.  
  21679.  
  21680.  
  21681.  
  21682.  
  21683.  
  21684.  
  21685.  
  21686.  
  21687.  
  21688.  
  21689.  
  21690.  
  21691.  
  21692.          Osiris SE         Technical Reference Manual        Page 373
  21693.  
  21694.               Summary
  21695.  
  21696.               _Sprint(format);
  21697.  
  21698.               format   : A user defined variable, STRING CLASS,  or  a 
  21699.                          string constant.
  21700.  
  21701.               Description
  21702.  
  21703.               The  _sprint function is a fast method of printing  text 
  21704.               to the serial port and the local display screen.
  21705.  
  21706.               _sprint has lower overhead than the _printf function but 
  21707.               does  have  some  restrictions.  Format  cannot  include 
  21708.               format specifications but may include escape sequences.
  21709.  
  21710.               Even  thou  _sprint  is  fast,  the  fastest  method  of 
  21711.               displaying  large  amounts of text that do  not  require 
  21712.               variables is _display_text.
  21713.  
  21714.               See the section on _display_text for details.
  21715.  
  21716.               Example
  21717.  
  21718.               _sprint("This is a test\n"); 
  21719.               _sprint(string);
  21720.  
  21721.  
  21722.  
  21723.  
  21724.  
  21725.  
  21726.  
  21727.  
  21728.  
  21729.  
  21730.  
  21731.  
  21732.  
  21733.  
  21734.  
  21735.  
  21736.  
  21737.  
  21738.  
  21739.  
  21740.  
  21741.  
  21742.  
  21743.  
  21744.  
  21745.  
  21746.  
  21747.          Osiris SE         Technical Reference Manual        Page 374
  21748.  
  21749.               Summary
  21750.  
  21751.               _Sprintf(variable,format{,variable1, Variable2, .....});
  21752.  
  21753.               Description
  21754.  
  21755.               Sprintf  functionally identical to the printf  function, 
  21756.               but  the  output is placed in a  STRING  CLASS  variable 
  21757.               instead  of  being  sent to the serial  port  and  local 
  21758.               display.
  21759.  
  21760.               It is used to create strings using multiple variables of 
  21761.               different CLASSES.
  21762.  
  21763.               Sprintf requires an additional  argument, in respects to 
  21764.               the  printf function, the destination  variable,  STRING 
  21765.               CLASS.
  21766.  
  21767.  
  21768.               See section on printf for a description on:
  21769.  
  21770.               format{,variable 1,variable 2, .....}.
  21771.  
  21772.               Example
  21773.  
  21774.               See  sample program segment in the section dealing  with 
  21775.               the execute command.
  21776.  
  21777.  
  21778.  
  21779.  
  21780.  
  21781.  
  21782.  
  21783.  
  21784.  
  21785.  
  21786.  
  21787.  
  21788.  
  21789.  
  21790.  
  21791.  
  21792.  
  21793.  
  21794.  
  21795.  
  21796.  
  21797.  
  21798.  
  21799.  
  21800.  
  21801.  
  21802.          Osiris SE         Technical Reference Manual        Page 375
  21803.  
  21804.               Summary
  21805.  
  21806.               _Storage(name,len);
  21807.  
  21808.               name : User defined variable, STRING CLASS. 
  21809.               len  : User defined variable, INTEGER CLASS.
  21810.  
  21811.               Description
  21812.  
  21813.               This  function  returns  the maximum  string  size  this 
  21814.               variable can safely hold.
  21815.  
  21816.               Do not confuse it with strlen. Strlen returns the length 
  21817.               of  the CONTENTS of the variable, while storage  returns 
  21818.               the MAXIMUM length of what COULD go in there.
  21819.  
  21820.  
  21821.               Example
  21822.  
  21823.               _Define_var(name,string(80)); 
  21824.               _define_var(max,integer);
  21825.  
  21826.               _storage(name,max);
  21827.  
  21828.          _printf("The variable can hold up to %d characters.\n",max);
  21829.  
  21830.               The output
  21831.  
  21832.               The variable can hold up to 80 characters.
  21833.  
  21834.               Notice   the   '80'  is  the  same  as   the   '80'   in 
  21835.               '_Define_var(name,string(80));'.
  21836.  
  21837.  
  21838.  
  21839.  
  21840.  
  21841.  
  21842.  
  21843.  
  21844.  
  21845.  
  21846.  
  21847.  
  21848.  
  21849.  
  21850.  
  21851.  
  21852.  
  21853.  
  21854.  
  21855.  
  21856.  
  21857.          Osiris SE         Technical Reference Manual        Page 376
  21858.  
  21859.               Summary
  21860.  
  21861.               _Strcat(string1,string2);
  21862.  
  21863.               string1 : A user defined variable, STRING CLASS. 
  21864.               string2 : A user defined variable,  STRING  CLASS,  or 
  21865.                         string constant.
  21866.  
  21867.               Description
  21868.  
  21869.               The  strcat  function is used to CONCAT to  string1  and 
  21870.               string2  to form a new string. The new string is  placed 
  21871.               in the first variable, string1.
  21872.  
  21873.               WARNING
  21874.  
  21875.               SPL/I does not validate string1. It must be large enough 
  21876.               to hold both strings.
  21877.  
  21878.               Example
  21879.  
  21880.               _define_var(s1,string(80)); 
  21881.               _define_var(s2,string(40));
  21882.  
  21883.               _assign(s1,"The"); _assign(s2,"Sysop");
  21884.  
  21885.               _printf("%s %s\n",s1,s2);
  21886.  
  21887.               The Sysop
  21888.  
  21889.               _strcat(s1," "); 
  21890.               _strcat(s1,s2);
  21891.  
  21892.               _printf("%s",s1);
  21893.  
  21894.               The Sysop
  21895.  
  21896.  
  21897.  
  21898.  
  21899.  
  21900.  
  21901.  
  21902.  
  21903.  
  21904.  
  21905.  
  21906.  
  21907.  
  21908.  
  21909.  
  21910.  
  21911.  
  21912.          Osiris SE         Technical Reference Manual        Page 377
  21913.  
  21914.               Summary
  21915.  
  21916.               _Strindex(rcode,string1,string2);
  21917.  
  21918.               rcode  : User defined variable, INTEGER CLASS. 
  21919.               string1: User defined  variable, STRING  CLASS,  or  a 
  21920.                        string constant. 
  21921.               string2: User defined variable, STRING CLASS.
  21922.  
  21923.               Description
  21924.  
  21925.               Strindex is used to determine if string1 is in string2.
  21926.  
  21927.               Strindex  returns the position, or -1 if string1 is  not 
  21928.               in string2, in the variable rcode.
  21929.  
  21930.               Example
  21931.  
  21932.               _DEFINE_VAR(NAME,STRING(80)); 
  21933.               _DEFINE_VAR(X,INTEGER); 
  21934.               _ASSIGN(NAME,_NAME);
  21935.  
  21936.               _printf("NAME : %s\n",name); 
  21937.               _strindex(X,"SYS",NAME); _printf("%d\n",x); 
  21938.               Produces the output: 
  21939.               NAME : The Sysop 
  21940.               4
  21941.  
  21942.               SYS is in name, and the starting position is 4.
  21943.  
  21944.               Keep in mind that individual positions in a STRING CLASS 
  21945.               variable starts at 0
  21946.  
  21947.  
  21948.  
  21949.  
  21950.                     --------- 
  21951.                    v         | 
  21952.                The Sysop     | 
  21953.                012345678     | 
  21954.                    ^---------+------ position 4 
  21955.                              | 
  21956.               Sys is --------
  21957.  
  21958.  
  21959.  
  21960.  
  21961.  
  21962.  
  21963.  
  21964.  
  21965.  
  21966.  
  21967.          Osiris SE         Technical Reference Manual        Page 378
  21968.  
  21969.               Example 2
  21970.  
  21971.               _DEFINE_VAR(NAME,STRING(80)); 
  21972.               _DEFINE_VAR(X,INTEGER); 
  21973.               _ASSIGN(NAME,_NAME);
  21974.  
  21975.               _printf("NAME : %s\n",name); 
  21976.               _strindex(X,"JOHN",NAME);
  21977.  
  21978.               _elseif(x != -1);
  21979.  
  21980.               _printf("JOHN is NOT in the string '%s'\n",name);
  21981.  
  21982.               _else;
  21983.  
  21984.               _printf("JOHN starts at position %d\n",x);
  21985.  
  21986.               _EEnd;
  21987.  
  21988.  
  21989.  
  21990.  
  21991.  
  21992.  
  21993.  
  21994.  
  21995.  
  21996.  
  21997.  
  21998.  
  21999.  
  22000.  
  22001.  
  22002.  
  22003.  
  22004.  
  22005.  
  22006.  
  22007.  
  22008.  
  22009.  
  22010.  
  22011.  
  22012.  
  22013.  
  22014.  
  22015.  
  22016.  
  22017.  
  22018.  
  22019.  
  22020.  
  22021.  
  22022.          Osiris SE         Technical Reference Manual        Page 379
  22023.  
  22024.               Summary
  22025.  
  22026.               _Strlen(string,length);
  22027.  
  22028.               string  :  a user defined  variable,  STRING  CLASS 
  22029.               length : a user defined variable, INTEGER CLASS
  22030.  
  22031.  
  22032.               Description
  22033.  
  22034.               _Strlen  is a function used to determine the  length  of  
  22035.               the  CONTENTS  IN the string. The function  returns  the  
  22036.               length in the variable length.
  22037.  
  22038.               Example
  22039.  
  22040.               _define_var(Mike,String(80)); 
  22041.               _define_var(len,Integer);
  22042.               _assign(Mike,"The Sysop");
  22043.               _strlen(Mike,len);
  22044.               _printf("The length of the string is %d.\n",len);
  22045.               Produces the output
  22046.  
  22047.               The length of the string is 9.
  22048.  
  22049.               E.g.,
  22050.  
  22051.              _assign(Mike,"The Sysop"); 
  22052.                            123456789
  22053.  
  22054.  
  22055.  
  22056.  
  22057.  
  22058.  
  22059.  
  22060.  
  22061.  
  22062.  
  22063.  
  22064.  
  22065.  
  22066.  
  22067.  
  22068.  
  22069.  
  22070.  
  22071.  
  22072.  
  22073.  
  22074.  
  22075.  
  22076.  
  22077.          Osiris SE         Technical Reference Manual        Page 380
  22078.  
  22079.  
  22080.               Summary
  22081.  
  22082.               _Switch(ch); 
  22083.                    _Case(value); 
  22084.                                _Break; 
  22085.               _Send;
  22086.  
  22087.               ch   : User defined variable, CHARACTER CLASS or a  user 
  22088.               defined variable, INTEGER CLASS. 
  22089.               value : An integer constant or a character constant.
  22090.  
  22091.               Description
  22092.  
  22093.               The  conditional  operator and the  elseif  construction  
  22094.               make it  easy  to  write programs  that  choose  between   
  22095.               two alternatives.  Sometimes,  however, a program  needs   
  22096.               to  choose one of SEVERAL alternatives. We can  do  this  
  22097.               using  elseif,  but in many cases it is more  convenient  
  22098.               to  use the switch statement. Here is an example showing  
  22099.               how   it  works. This program reads in  a  letter,  then  
  22100.               responds   by printing an animal name that  begins  with  
  22101.               that letter.
  22102.  
  22103.               _getc(ch,1); 
  22104.               _switch(ch);
  22105.  
  22106.                _case('A'); 
  22107.                           _printf("argala, a wild sheep of Asia\n"); 
  22108.                           _break; 
  22109.                _case('B'); 
  22110.                          _printf("babirusa, a wild pig of Malay\n"); 
  22111.                          _break; 
  22112.                _case('C'); 
  22113.                          _printf("coati, racoon like mammal\n"); 
  22114.                          _break; 
  22115.                _case('D'); 
  22116.                        _printf("desman, aquatic, molelike critter\n"); 
  22117.                        _break; 
  22118.                _case('E'); 
  22119.                         _printf("echidna, the sphiny anteater\n"); 
  22120.                         _break; 
  22121.                _default; 
  22122.                         _printf("That's a stumper!\n"); 
  22123.               _send;
  22124.  
  22125.               Switch  may  also use an INTEGER variable. Here  is  the 
  22126.               same program, but it uses an integer variable instead of 
  22127.               character variable.
  22128.  
  22129.  
  22130.  
  22131.  
  22132.          Osiris SE         Technical Reference Manual        Page 381
  22133.  
  22134.  
  22135.               _getc(ch,1); 
  22136.               _cast(ch,integer); 
  22137.               _switch(ch);
  22138.  
  22139.                _case(65); 
  22140.                           _printf("argala, a wild sheep of Asia\n"); 
  22141.                           _break; 
  22142.                _case(66); 
  22143.                          _printf("babirusa, a wild pig of Malay\n"); 
  22144.                          _break; 
  22145.                _case(67); 
  22146.                          _printf("coati, racoon like mammal\n"); 
  22147.                          _break; 
  22148.                _case(68); 
  22149.                        _printf("desman, aquatic, molelike critter\n"); 
  22150.                        _break; 
  22151.                _case(69); 
  22152.                         _printf("echidna, the sphiny anteater\n"); 
  22153.                         _break; 
  22154.                _default; 
  22155.                         _printf("That's a stumper!\n"); 
  22156.               _send;
  22157.  
  22158.  
  22159.               It might look a little strange and you may be  wondering 
  22160.               how in the world 'A' gets to be an integer 65. Well,  an 
  22161.               upper  case 'A' has the ASCII value of 65. When you   it    
  22162.               casted   to  an integer, the ASCII  65   (uppercase   A)  
  22163.               becomes an integer 65.
  22164.  
  22165.               If  you were to cast an integer 66 to character  format, 
  22166.               it would become an upper case 'B'.
  22167.  
  22168.  
  22169.  
  22170.  
  22171.  
  22172.  
  22173.  
  22174.  
  22175.  
  22176.  
  22177.  
  22178.  
  22179.  
  22180.  
  22181.  
  22182.  
  22183.  
  22184.  
  22185.  
  22186.  
  22187.          Osiris SE         Technical Reference Manual        Page 382
  22188.  
  22189.               This   is how the switch statement works.  The   express   
  22190.               in   the    parentheses  following   word   SWITCH    is   
  22191.               evaluated. In this case it has whatever value you entered  
  22192.               for ch. Then the  program  scans  the list  of  "labels"   
  22193.               (case('A'),   case('B'),    case('C'),  etc.   in   this  
  22194.               instances)  until   it  finds  one   that   matches  the  
  22195.               value.   The   program  then jumps  to   the  next  line  
  22196.               following  the  label.  What  if there is not match?  If  
  22197.               there  is a line labeled "default", it must be the  last  
  22198.               one, the program jumps there.
  22199.  
  22200.               The  "break"  signals the END of the body of  statements 
  22201.               associated with LABEL.
  22202.  
  22203.               If you are familiar with Pascal, you will recognize  the 
  22204.               switch  statement  as being similar to the  Pascal  CASE 
  22205.               statement.  The  most important difference is  that  the 
  22206.               SWITCH  statement  requires the use of a _BREAK  if  you 
  22207.               want only the labeled statement(s) to be processed.
  22208.  
  22209.               The   SWITCH   labels must be a   character  or  integer  
  22210.               constant.  You cannot use a variable for a label. 
  22211.  
  22212.               When should you use a SWITCH and when should you use the 
  22213.               elseif construction? Often you don't have a choice.  You  
  22214.               can't use a switch if your choice is based on evaluating  
  22215.               a  REAL,  LONG variable or expression.  Nor  can you   a  
  22216.               SWITCH if the variable must fall into  a  certain range.  
  22217.               It is simple to write
  22218.  
  22219.               _if(ch < 200 .AND. ch > 2)
  22220.  
  22221.               but  covering  this  possibility  with  a  switch  would  
  22222.               involve  setting  up  case  labels for each ch  from   3   
  22223.               to   199.  However if you can use SWITCH,  your  program  
  22224.               will  run more efficiently.
  22225.  
  22226.  
  22227.  
  22228.  
  22229.  
  22230.  
  22231.  
  22232.  
  22233.  
  22234.  
  22235.  
  22236.  
  22237.  
  22238.  
  22239.  
  22240.  
  22241.  
  22242.          Osiris SE         Technical Reference Manual        Page 383
  22243.  
  22244.               Summary
  22245.  
  22246.               _Sysdate(year,month,day);
  22247.  
  22248.               Year, 
  22249.               Month, 
  22250.               Day   : User defined, INTEGER CLASS, variables.
  22251.  
  22252.               Description
  22253.  
  22254.               The function _sysdate places the current system date  in 
  22255.               year,month, and day.
  22256.  
  22257.               Example
  22258.  
  22259.               _Define_VAR(Y,INTEGER); 
  22260.               _DEFINE_VAR(M,INTEGER); 
  22261.               _DEFINE_VAR(D,INTEGER); 
  22262.               _SysDate(Y,M,D); 
  22263.               _PRINTF("The current date is : %d/%d/%d\n",m,d,y);
  22264.  
  22265.               produces the output
  22266.  
  22267.               The current date is : 12/23/1991
  22268.  
  22269.               If you want a two digit year
  22270.  
  22271.               _SysDate(Y,M,D); 
  22272.               _MATH(Y = Y - 1900); 
  22273.               _PRINTF("The current date is : %d/%d/%d\n",m,d,y);
  22274.  
  22275.               produces the output
  22276.  
  22277.               The current date is : 12/23/91
  22278.  
  22279.  
  22280.  
  22281.  
  22282.  
  22283.  
  22284.  
  22285.  
  22286.  
  22287.  
  22288.  
  22289.  
  22290.  
  22291.  
  22292.  
  22293.  
  22294.  
  22295.  
  22296.  
  22297.          Osiris SE         Technical Reference Manual        Page 384
  22298.  
  22299.               Summary
  22300.  
  22301.               _Systime(h,m,s,hu);
  22302.  
  22303.               H, 
  22304.               M, 
  22305.               S, 
  22306.               HU  : User defined variables, INTEGER CLASS
  22307.  
  22308.  
  22309.               Description
  22310.  
  22311.               This function retrieves the current system time in HOUR, 
  22312.               MINUTE,  SECOND, HUNDRED SECOND format and stores it  in 
  22313.               the user defined variables.
  22314.  
  22315.               Example
  22316.  
  22317. _DEFINE_VAR(HOUR,INTEGER); 
  22318. _DEFINE_VAR(MINUTE,INTEGER); 
  22319. _DEFINE_VAR(SECOND,INTEGER); 
  22320. _DEFINE_VAR(HUND,INTEGER); 
  22321. _SYSTIME(HOUR,MINUTE,SECOND,HUND); 
  22322. _PRINTF("The time is : %02d:%02d:%02d.%d\n",HOUR,MINUTE,SECOND,HUND);
  22323.  
  22324.               produces the output
  22325.  
  22326.               The time is : 02:23:45.77
  22327.  
  22328.               Time is returned in 24 hour format. If you would  rather 
  22329.               display it in AM/PM format. . .
  22330.  
  22331.  _DEFINE_VAR(HOUR,INTEGER); 
  22332.  _DEFINE_VAR(MINUTE,INTEGER); 
  22333.  _DEFINE_VAR(SECOND,INTEGER); 
  22334.  _DEFINE_VAR(HUND,INTEGER);
  22335.  
  22336.  _SYSTIME(HOUR,MINUTE,SECOND,HUND);
  22337.  
  22338.  _ELSEIF(HOUR > 12);
  22339.  
  22340.    _MATH(HOUR = HOUR - 12); 
  22341.    _PRINTF("The time is : %02d:%02d:%02d PM\n",HOUR,MINUTE,SECOND);
  22342.  
  22343.  _ELSE;
  22344.  
  22345.     _PRINTF("The time is : %02d:%02d:%02d AM\n",HOUR,MINUTE,SECOND);
  22346.  
  22347. _EEND;
  22348.  
  22349.  
  22350.  
  22351.  
  22352.          Osiris SE         Technical Reference Manual        Page 385
  22353.  
  22354.               Summary
  22355.  
  22356.               _Timerset(v1,1000);
  22357.  
  22358.               v1  : User defined variable, LONG CLASS.
  22359.  
  22360.               Description
  22361.  
  22362.               This  function can be used to track elapse time and  can 
  22363.               be quite helpful when it comes to optimizing your  code. 
  22364.               You may also use this function to LIMIT time spent in  a 
  22365.               certain section of your program.
  22366.  
  22367.               _timerset  requires  two arguments, a  long  integer  to 
  22368.               store the current time in, and a long constant.
  22369.  
  22370.               If  you are going to use timerset to track elapse  time, 
  22371.               the long constant should always be 0.
  22372.  
  22373.               If you are going to use timerset to limit the time spent 
  22374.               in a certain section of your program, the long  constant 
  22375.               should  be  the  amount of time you want  to  limit  the 
  22376.               caller to, in CLOCK TICS.
  22377.  
  22378.               There  are  100 clock tics to a second; 200 would  be  2 
  22379.               seconds,  500  would  be 5 seconds, 30000  would  be  30 
  22380.               seconds, etc.
  22381.  
  22382.               Examples
  22383.  
  22384.               To figure elapse time:
  22385.  
  22386.               _define_var(start,Long); 
  22387.               _define_var(finish,long); 
  22388.               _define_var(elapse,long); 
  22389.               _timerset(start,0); 
  22390.                                                                                                               _timerset(finish,0); 
  22391.               _math(elapse = finish - start / 100); 
  22392.               _printf("Elapse time : %l Seconds\n",elapse);
  22393.  
  22394.  
  22395.  
  22396.  
  22397.  
  22398.  
  22399.  
  22400.  
  22401.  
  22402.  
  22403.  
  22404.  
  22405.  
  22406.  
  22407.          Osiris SE         Technical Reference Manual        Page 386
  22408.  
  22409.               Summary
  22410.  
  22411.               _Timeup(v1,rtcode);
  22412.  
  22413.               v1     : User defined variable, LONG CLASS 
  22414.               rtcode : User defined variable, INTEGER CLASS
  22415.  
  22416.               Description
  22417.  
  22418.               Timeup can be used in conjunction with timerset to limit 
  22419.               the amount of time you can stay in a specific section of 
  22420.               code.
  22421.  
  22422.               Timeup requires two variables; The first is a long  (the 
  22423.               one  you  used  with  timerset) and  the  second  is  an 
  22424.               INTEGER. If the time has expired, timeup will place 1 in 
  22425.               rtcode. If the time has not expired, timeup will place 0 
  22426.               in rtcode.
  22427.  
  22428.               Example
  22429.  
  22430.               _define_var(time,long); 
  22431.               _define_var(rtcode,integer); 
  22432.               _timerset(time,30000);
  22433.  
  22434.               _assign(rtcode,0);
  22435.  
  22436.               _while(rtcode = 0);
  22437.  
  22438.                      _timeup(time,rtcode);
  22439.  
  22440.               _wend;
  22441.  
  22442.               This would hold you in the while loop for 30 seconds.
  22443.  
  22444.  
  22445.  
  22446.  
  22447.  
  22448.  
  22449.  
  22450.  
  22451.  
  22452.  
  22453.  
  22454.  
  22455.  
  22456.  
  22457.  
  22458.  
  22459.  
  22460.  
  22461.  
  22462.          Osiris SE         Technical Reference Manual        Page 387
  22463.  
  22464.               Summary
  22465.  
  22466.               _Unlink(file);
  22467.  
  22468.               file : User defined variable, STRING CLASS, or a  string 
  22469.                      constant.
  22470.  
  22471.               Description
  22472.  
  22473.               Deletes "file" from your disk. Identical to the dos  DEL 
  22474.               command so be careful. Wild cards are supported so don't 
  22475.               let a caller loose with this command or you may not have 
  22476.               a hard drive when you get up in the morning.
  22477.  
  22478.               Example
  22479.  
  22480.               unlink("-TMP.!!!");
  22481.  
  22482.  
  22483.  
  22484.  
  22485.  
  22486.  
  22487.  
  22488.  
  22489.  
  22490.  
  22491.  
  22492.  
  22493.  
  22494.  
  22495.  
  22496.  
  22497.  
  22498.  
  22499.  
  22500.  
  22501.  
  22502.  
  22503.  
  22504.  
  22505.  
  22506.  
  22507.  
  22508.  
  22509.  
  22510.  
  22511.  
  22512.  
  22513.  
  22514.  
  22515.  
  22516.  
  22517.          Osiris SE         Technical Reference Manual        Page 388
  22518.  
  22519.               Summary
  22520.  
  22521.               _While(expression......);
  22522.  
  22523.                   body
  22524.  
  22525.               _Wend;
  22526.  
  22527.               A  while  state has four distinct parts.  First  is  the 
  22528.               keyword  _while.  Then,  in parentheses,  comes  a  test 
  22529.               condition (the expression) or multiple test  conditions. 
  22530.               The body, a series of commands, and finally the _WEND.
  22531.  
  22532.               Expression(s)  work  like the expressions  for  the  _IF 
  22533.               functions. See the section on _IF for further details.
  22534.  
  22535.                            -------------<------------------<--- 
  22536.                           |                                    | 
  22537.                           v         TRUE                       | 
  22538.          WHILE ---> [EXPRESSION(S)] -------> BODY ----> _WEND - 
  22539.                           | 
  22540.                           | False 
  22541.                           v 
  22542.                         First Statement following _WEND
  22543.  
  22544.  
  22545.               The  while  statement belongs to a class  of  statements 
  22546.               sometimes  called "structured statements"  because  they 
  22547.               posses  a  structure  more complex  than  a  simple  _IF 
  22548.               statement.
  22549.  
  22550.  
  22551.  
  22552.  
  22553.  
  22554.  
  22555.  
  22556.  
  22557.  
  22558.  
  22559.  
  22560.  
  22561.  
  22562.  
  22563.  
  22564.  
  22565.  
  22566.  
  22567.  
  22568.  
  22569.  
  22570.  
  22571.  
  22572.          Osiris SE         Technical Reference Manual        Page 389
  22573.  
  22574.               Windows Summary 
  22575.  
  22576.               _Openwindow(win#,ur,uc,lr,lc,border_type,border_color); 
  22577.               _Closewindow(win#); 
  22578.               _Clearwindow(win#);
  22579.  
  22580.               win#       : An INTEGER constant, 1 - 10.
  22581.  
  22582.               ur, 
  22583.               uc, 
  22584.               lr, 
  22585.               lc, 
  22586.               border_type, 
  22587.               border_color : Integer CONSTANTS.
  22588.  
  22589.               Description
  22590.  
  22591.               The openwindow function utilizes ANSI to create a WINDOW 
  22592.               on the screen. It saves the area under the window and  a 
  22593.               call to closewindow will restore the area.
  22594.  
  22595.               The  parameter  WIN#  is  an  integer  CONSTANT  (not  a 
  22596.               variable)  used to identify the window, you may use  the 
  22597.               values  1 through 10. If you make a call to  clearwindow 
  22598.               or  to closewindow, you have to pass this WIN# so  those 
  22599.               functions will know WHICH window to close, if more  than 
  22600.               one is open.
  22601.  
  22602.               UR and UC points to the upper row and upper left  column 
  22603.               of  the  window. LR and LC point to the  lower  row  and 
  22604.               lower RIGHT column of the window, not including border.
  22605.  
  22606.               Valid rows values are   : 2 - 24 
  22607.               Valid column values are : 2 - 79
  22608.  
  22609.               The screen is actual 1-25 and 1 - 80, but space must  be 
  22610.               reserved for the border.
  22611.  
  22612.               You  may  specify the TYPE of border, single  or  double 
  22613.               line, you want using "border_type". A 0 will generate  a 
  22614.               single  line  border and 1 will generate a  double  line 
  22615.               border.
  22616.  
  22617.               Border_color tells me which foreground color to use  for 
  22618.               the border.
  22619.  
  22620.               Valid border colors range from 0 (black) to 31 (blinking 
  22621.               bright white). See section on "color()" for a full  list 
  22622.               of values and their corresponding colors.
  22623.  
  22624.               Openwindow  does NOT save the current  cursor  location, 
  22625.               see  section  on  _curget  and  _locate,   nor  does  it 
  22626.               validate the parameters passed to it. 
  22627.          Osiris SE         Technical Reference Manual        Page 390
  22628.  
  22629.  
  22630.               You have two possible problem areas when using  windows. 
  22631.               The  first is monitor mismatching. If you do color,  you 
  22632.               must  use  a  color monitor on the BBS or  you  have  to 
  22633.               select  your  colors  carefully.  When  the  closewindow 
  22634.               function  is called, it will restore the  section  under 
  22635.               the window and then read that section so it can send the 
  22636.               same   colors/characters   to  the  remote   screen.   A 
  22637.               monographic  screen  does not use the same  color  codes 
  22638.               that a color screen will and the screen may not  restore 
  22639.               to your INTENDED colors.
  22640.  
  22641.               The  second  problem area is placement. Doing  a  window 
  22642.               without  clearing  the  screen,  a  slash  command   for 
  22643.               instances,  will  not  restore the proper  area  on  the 
  22644.               remote  screen because your BBS screen is smaller, by  3 
  22645.               lines, than the callers. This is due to the TOP and  two 
  22646.               BOTTOM  status lines Osiris keeps on the screen all  the 
  22647.               time.
  22648.  
  22649.  
  22650.               _closewindow(WIN#) closes the window pointed to by  WIN# 
  22651.               and  restores the screen area beneath the window to  its 
  22652.               original state.
  22653.  
  22654.               _clearwindow(WIN#) clears the window pointed to by WIN#.
  22655.  
  22656.  
  22657.  
  22658.  
  22659.  
  22660.  
  22661.  
  22662.  
  22663.  
  22664.  
  22665.  
  22666.  
  22667.  
  22668.  
  22669.  
  22670.  
  22671.  
  22672.  
  22673.  
  22674.  
  22675.  
  22676.  
  22677.  
  22678.  
  22679.  
  22680.  
  22681.  
  22682.          Osiris SE         Technical Reference Manual        Page 391
  22683.  
  22684.  
  22685.               Example
  22686.  
  22687.               _define_var(s1,string(30)); 
  22688.               _define_var(ch,character); 
  22689.               _define_var(row,integer); 
  22690.               _define_var(col,integer); 
  22691.               _define_var(not_done,integer); 
  22692.               _define_var(not_valid,integer); 
  22693.               _assign(not_done,1); 
  22694.               _while(not_done);
  22695.  
  22696.               _cls(); 
  22697.               _display_text("d:\itp\m.ans"); 
  22698.               _assign(not_valid,1); 
  22699.               _while(not_valid); 
  22700.               _sprint("Selection ? "); 
  22701.               _gets(s1,1); 
  22702.               _copy_ch(ch,s1,0); 
  22703.               _sprint("\r         \r"); 
  22704.               _elseif(ch != 'L'); 
  22705.               _curget(row,col); 
  22706.               _call(errormsg); 
  22707.               _locate(row,col);
  22708.  
  22709.               _else;
  22710.  
  22711.               _clear(not_valid); _clear(not_done);
  22712.  
  22713.               _eend; 
  22714.               _wend;
  22715.  
  22716.               _wend;
  22717.  
  22718.               _mend;
  22719.  
  22720.               _procedure(errormsg); 
  22721.               _openwindow(1,8,22,10,51,1,13); 
  22722.               _locate(8,22); 
  22723.               _sprint("That Is "); 
  22724.               _color(30); 
  22725.               _sprint("\aNOT "); 
  22726.               _color(7); 
  22727.               _sprint("a valid selection."); 
  22728.               _locate(10,25); 
  22729.               _sprint("Press RETURN to Continue"); 
  22730.               _getc(ch,0); 
  22731.               _closewindow(1); 
  22732.               _sprint("");
  22733.  
  22734.               _pend;
  22735.  
  22736.  
  22737.          Osiris SE         Technical Reference Manual        Page 392
  22738.                
  22739.                               Spl/I Database System
  22740.  
  22741.          SPL/I  supports  user defined flat databases with  a  primary 
  22742.          key  field,  using an eight level  memory  based  high  speed 
  22743.          Btree  indexing system.
  22744.  
  22745.                                   Number Of Fields
  22746.  
  22747.  
  22748.               SPL/I   does   not limit you to a  specific  number   of 
  22749.               fields.   A database  record  can consist of 1 field  or 
  22750.               999  fields.  The only  limit SPL/I places on a database 
  22751.               record  is overall  size. The record  can be  no  larger 
  22752.               than  1000 bytes. You are however, limited to  only  one 
  22753.               index field.
  22754.  
  22755.          The  best way to teach you about database construction is  to 
  22756.          take  you though the process of setting up a simple  database 
  22757.          so . . .
  22758.  
  22759.  
  22760.                               Defining A Database
  22761.  
  22762.  
  22763.          The   first  step in setting up an SPL/I database  is  simple 
  22764.          and one that can't be skipped. Set down at the table  with  a 
  22765.          pencil and paper and decide on exactly WHAT you are going  to 
  22766.          put in a record.
  22767.  
  22768.          For  this tutorial, we'll use the vetlink database  found  on 
  22769.          VL3.  The  vetlink  database is will  list  BBS'  around  the 
  22770.          country that carry a specific echomail conference. We want to 
  22771.          let  people log on and find the closest system in their  area 
  22772.          so they don't have to call long distance.
  22773.  
  22774.          The  first step is to list, on paper,  exactly what we   want 
  22775.          to store in each record.
  22776.  
  22777.  
  22778.          We want:
  22779.  
  22780.          The  BBS' name, Phone No., and The City and State the BBS  is 
  22781.          located in.
  22782.  
  22783.          The next step is to figure out what piece of information  the 
  22784.          caller  WILL  know  that we can use for a  KEY  to  find  the 
  22785.          correct record.
  22786.  
  22787.          If  you are looking for something in your area,  then  you'll 
  22788.          more than likely know the AREA CODE for that area. Ok, we got 
  22789.          that in the phone number field. But, that means we can't  put 
  22790.          the  WHOLE phone number in one field. If you knew  the  whole 
  22791.          phone number, there wouldn't be any need for the database. 
  22792.          Osiris SE         Technical Reference Manual        Page 393
  22793.  
  22794.          So,  we're going to have to split the phone number   so   the 
  22795.          area  code  can have its own field and can act as our primary 
  22796.          index field.
  22797.  
  22798.          The  BBS' name 
  22799.          Area Code 
  22800.          Rest of the phone number. 
  22801.          City and State.
  22802.  
  22803.          That'll  work  just fine, but...lets think  things  though  a 
  22804.          little  more. It might be nice if you could enter a  City  or 
  22805.          State and find the BBS  that way, since those would be  KNOWN 
  22806.          factors.  And what about breaking the search down  into  area 
  22807.          code  and dial prefix? The dial prefix would certainly  be  a 
  22808.          KNOWN factor.
  22809.  
  22810.          Ok, now we have:
  22811.  
  22812.          The BBS' name 
  22813.          Area Code 
  22814.          Prefix 
  22815.          Suffix 
  22816.          City 
  22817.          State
  22818.  
  22819.          There,  now  we've broken each piece of information  down  so 
  22820.          that  possible KNOWN factors can have their own fields and  I 
  22821.          think we're ready to go to the next step.
  22822.  
  22823.          Before  we proceed, look back at the last paragraph.  "KNOWN" 
  22824.          is  very important. ALL database systems must have  at  least 
  22825.          ONE KNOWN factor. Without that, there is no way you can  come 
  22826.          up with a record.
  22827.  
  22828.          Now  that we know what we what to put into each field and  we 
  22829.          know  that the "Area Code" is going to be our  primary  index 
  22830.          field, we need to decide just how BIG each field has to be.
  22831.  
  22832.          Knowing how large to make a field can sometimes be as  tricky 
  22833.          as deciding on what fields to use. Lets take "The BBS' name".
  22834.  
  22835.          We  don't  KNOW how large a field to make  because  we  can't 
  22836.          predict  what someone else is going to do, name wise.  So  we 
  22837.          have to decide how much space we're going to allow and  we'll 
  22838.          just have to truncate anything that exceeds that length. Lets 
  22839.          say  we'll  allow upto 40 characters for the BBS  name.  That 
  22840.          should be more than enough for most BBS'.
  22841.  
  22842.  
  22843.  
  22844.  
  22845.  
  22846.  
  22847.          Osiris SE         Technical Reference Manual        Page 394
  22848.  
  22849.          Rule 1: Always add 1 to any field length as a safety cushion.
  22850.  
  22851.          Field 1, BBS name - 41 Characters.
  22852.  
  22853.          The next field is "AREA CODE" and that's an easy one. We know 
  22854.          all  area  codes  have  3  digits  so  field  #2  will  be  4 
  22855.          characters, remember Rule 1?
  22856.  
  22857.          Field 2, Area code - 4 Characters.
  22858.  
  22859.          The  next  field,  prefix,  is also has  a  known  length,  3 
  22860.          digits.
  22861.  
  22862.          Field 3, Prefix - 4 Characters.
  22863.  
  22864.          We're  in  luck, the fourth field "Suffix" also has  a  known 
  22865.          length (for the United States) 4 digits.
  22866.  
  22867.          Field 4, Suffix - 5 Characters.
  22868.  
  22869.          Field  5, City, is like the first field, BBS name,  and  like 
  22870.          the BBS name, we'll just have to decide how much space  we're 
  22871.          going  to allow. Generally, 26 characters will  handle  about 
  22872.          any  CITY name you're likely to encounter.
  22873.  
  22874.          Field 5, City - 27 Characters.
  22875.  
  22876.          Field 6 has a known length, 2 characters.
  22877.  
  22878.          Field 6, State - 3 Characters.
  22879.  
  22880.          NOTE:  When you actual create the database, OSM will ask  for 
  22881.          field  length  and not characters. In this  case,  number  of 
  22882.          characters is the field length.
  22883.  
  22884.          Our  final  step  is the name. Each database has  to  have  a 
  22885.          unique 8 character name, this does not include the extension. 
  22886.          When  creating  database  names, never include  any  type  of 
  22887.          file extension, those are automatically added for you.
  22888.  
  22889.          In this case, we'll call the database VETLINK
  22890.  
  22891.          Now  that we have written ALL of this on our piece of  paper, 
  22892.          we're ready to create the actual database and we have to  use 
  22893.          OSM for that.
  22894.  
  22895.          Under  the  primary menu option "DBASE", you'll find  a  sub- 
  22896.          option  called  "MAKE DB". Select this option to  create  the 
  22897.          database.
  22898.  
  22899.          The first question will be "Number of fields". We go back  to 
  22900.          our  piece of paper and count the fields and we come up  with 
  22901.          6 so, enter that number. 
  22902.          Osiris SE         Technical Reference Manual        Page 395
  22903.  
  22904.          The next six questions will be "Enter Length Field #X" with X 
  22905.          being the actual field number. Again, reference you're  paper 
  22906.          and  enter  the  number characters you wrote  down  for  that 
  22907.          field.
  22908.  
  22909.          E.g.,
  22910.  
  22911.          41 
  22912.          4 
  22913.          4 
  22914.          5 
  22915.          27 
  22916.          3
  22917.  
  22918.          The  next question will be "Use which field as Index  ?".  We 
  22919.          decided  that  AREA code would be the field we'd use  as  our 
  22920.          primary index and AREA code is field #2.
  22921.  
  22922.          The  final  question, the name to use for  the  database.  We 
  22923.          decided on VETLINK so type that in.
  22924.  
  22925.          Ok,  now  that  we have created the database how  do  we  put 
  22926.          information in it?
  22927.  
  22928.          Create  a  text  file,  name doesn't  matter  but  we'll  use 
  22929.          DATA.TXT for this example.
  22930.  
  22931.          Each line of the text file will be a RECORD in our  database. 
  22932.          Each field will be separated by @. Since our database  record  
  22933.          contains  six  fields,  a line in the text  file  would  look  
  22934.          something like this: 
  22935.  
  22936.          The Cat's Lair@314@334@6359@CAPE GIRARDEAU@MO@ 
  22937.              ^           ^   ^   ^         ^         ^ 
  22938.              |           |   |   |         |         | 
  22939.           Field 1        |   |   |         |         | 
  22940.                     Field 2  |   |         |         | 
  22941.                          Field 3 |         |         | 
  22942.                               Field 4      |         | 
  22943.                                        Field 5       | 
  22944.                                                   Field 6
  22945.  
  22946.          After you add all the records to this text file, run OSM  and 
  22947.          under the DBASE option, you'll find a sub-option called  "ADD 
  22948.          DB".
  22949.  
  22950.          When  you select this option, the first question will be  the 
  22951.          name of the database, VETLINK. Remember not  to use any  type   
  22952.          of file extension.
  22953.  
  22954.          The next question will be the name of the text file, data.txt 
  22955.          in this case.
  22956.  
  22957.          Osiris SE         Technical Reference Manual        Page 396
  22958.  
  22959.          That's it. OSM will take the text records out of data.txt and 
  22960.          import them into the database.
  22961.  
  22962.          This is not the only way to get records into a database,  but   
  22963.          90 percent of all databases will use this method.
  22964.  
  22965.          Now we have our database and we have data in it so the  final 
  22966.          step  will  be  to create an SPL/I command file  that  allows 
  22967.          callers to access the data.
  22968.  
  22969.  
  22970.                              Creating Vetlink.scr
  22971.  
  22972.          The first order of business is to OPEN the database so
  22973.  
  22974.          _OPENDATABASE("C:\OSIRIS\VETLINK");
  22975.  
  22976.          Notice  I  did not use a  file  extension.
  22977.  
  22978.          Now  we  need  some form of loop that will keep  you  in  the   
  22979.          vetlink program until YOU decide to quit.
  22980.  
  22981.          _DEFINE_VAR(NOT_DONE,INTEGER); 
  22982.          _ASSIGN(NOT_DONE,1);
  22983.  
  22984.          _WHILE(NOT_DONE);
  22985.  
  22986.  
  22987.          _WEND; 
  22988.          _MEND;
  22989.  
  22990.          I've used a while loop and a variable called not_done,  which   
  22991.          pretty much explains the entire loop. 
  22992.  
  22993.          I've  assigned  not_done the value of 1 and  when  the  while   
  22994.          'expression'  is evaluated, it will evaluate TRUE  because  a   
  22995.          value  in  a  single variable that is  not  0  (Zero)  always   
  22996.          evaluates TRUE.
  22997.  
  22998.          To  kill  the loop, all I have to do is change the  value  in   
  22999.          NOT_DONE to 0. The 'expression' would evaluate FALSE and  I'd   
  23000.          drop out of the loop. Neat, clean, and simple.
  23001.  
  23002.          You'll also notice the FIRST thing I did after the _WEND  was   
  23003.          to close the database. ALWAYS close a database before leaving   
  23004.          a  command  file. Failing to close a database can  cause  all   
  23005.          kinds of problems.
  23006.  
  23007.  
  23008.  
  23009.  
  23010.  
  23011.  
  23012.          Osiris SE         Technical Reference Manual        Page 397
  23013.  
  23014.  
  23015.          Put everything together and we have:
  23016.  
  23017.          _OPENDATABASE("C:\OSIRIS\VETLINK"); 
  23018.          _DEFINE_VAR(NOT_DONE,INTEGER); 
  23019.          _ASSIGN(NOT_DONE,1);
  23020.  
  23021.          _WHILE(NOT_DONE);
  23022.  
  23023.  
  23024.          _WEND; 
  23025.          _closedatabase(); 
  23026.          _MEND;
  23027.  
  23028.  
  23029.          The first thing I want to do in the loop is display the  menu   
  23030.          and get your selection. Since I'm going to get a selection, I   
  23031.          need  to  also define a variable to hold it.  I'll  add  that   
  23032.          before the loop. If I put the define inside the loop, I'd  be   
  23033.          redefining  the same variable every time the loop cycled  and   
  23034.          sooner  or  later  the computer would crash with  an  out  of   
  23035.          memory error.
  23036.  
  23037.          Since  I'm  going for  single character input,  the  variable   
  23038.          only needs to hold 1 character. The CHARACTER CLASS  variable   
  23039.          fits  that to a tee. The name, well I like CH  for  character   
  23040.          class variables so I'll use that.
  23041.  
  23042.          _OPENDATABASE("C:\OSIRIS\VETLINK"); 
  23043.          _DEFINE_VAR(NOT_DONE,INTEGER); 
  23044.          _DEFINE_VAR(CH,CHARACTER);
  23045.  
  23046.          _ASSIGN(NOT_DONE,1);
  23047.  
  23048.          _WHILE(NOT_DONE);
  23049.  
  23050.  
  23051.          _WEND; 
  23052.          _closedatabase(); 
  23053.          _MEND;
  23054.  
  23055.  
  23056.  
  23057.  
  23058.  
  23059.  
  23060.  
  23061.  
  23062.  
  23063.  
  23064.  
  23065.  
  23066.  
  23067.          Osiris SE         Technical Reference Manual        Page 398
  23068.  
  23069.          Next step is to put the menu, the input prompt, and the input   
  23070.          command inside the loop:
  23071.  
  23072.          _OPENDATABASE("C:\OSIRIS\VETLINK"); 
  23073.          _DEFINE_VAR(NOT_DONE,INTEGER); 
  23074.          _DEFINE_VAR(CH,CHARACTER);
  23075.  
  23076.          _ASSIGN(NOT_DONE,1);
  23077.  
  23078.          _WHILE(NOT_DONE);
  23079.  
  23080.          _CLS();
  23081.  
  23082.          _sprint("A) Within A Specific Area Code\n"); 
  23083.          _sprint("B) Within A Specific City\n"); 
  23084.          _sprint("C) Within A Specific State\n\n"); 
  23085.          _sprint("Q) Quit \n\n"); 
  23086.          _sprint("Enter Selection ? "); 
  23087.          _getc(ch,1);
  23088.  
  23089.  
  23090.          _WEND; 
  23091.          _closedatabase(); 
  23092.          _MEND;
  23093.  
  23094.  
  23095.          I've  elected to use the _sprint function to print the  menu.   
  23096.          You  could use any one of half a dozen methods, but this  one   
  23097.          is the simplest.
  23098.  
  23099.          Notice the _getc(ch,1) . . . To simplify processing, I'm only   
  23100.          going  to  test  for an UPPERCASE  responses.  The  1  forces   
  23101.          anything you type to UPPERCASE.
  23102.  
  23103.          E.g., 'A' and 'a' are not the same. If I were to test for 'A'   
  23104.          and you enter 'a', the test would fail. The 1 guarantees that   
  23105.          your 'a' will be converted to 'A' before I get it.
  23106.  
  23107.          Ok, now that I have the database open, I've got you inside  a   
  23108.          loop  that  displays  a menu and gets  come  type  of  single   
  23109.          character  response,  I got to do something  with  it.  
  23110.  
  23111.          Using   ELSEIF  may  be  the  easiest  way  to  handle   this   
  23112.          particular  program, given the limited number of options,  so  
  23113.          let's  put  in  some  elseif statements to determine  if  you  
  23114.          entered  a  valid  selection; A, B, C, or Q.
  23115.  
  23116.  
  23117.  
  23118.  
  23119.  
  23120.  
  23121.  
  23122.          Osiris SE         Technical Reference Manual        Page 399
  23123.  
  23124.          _OPENDATABASE("C:\OSIRIS\VETLINK"); 
  23125.          _DEFINE_VAR(NOT_DONE,INTEGER); 
  23126.          _DEFINE_VAR(CH,CHARACTER);
  23127.  
  23128.          _ASSIGN(NOT_DONE,1);
  23129.  
  23130.          _WHILE(NOT_DONE);
  23131.  
  23132.          _CLS();
  23133.  
  23134.          _sprint("A) Within A Specific Area Code\n"); 
  23135.          _sprint("B) Within A Specific City\n"); 
  23136.          _sprint("C) Within A Specific State\n\n"); 
  23137.          _sprint("Q) Quit \n\n"); 
  23138.          _sprint("Enter Selection ? "); 
  23139.          _getc(ch,1); 
  23140.          _cls();
  23141.  
  23142.          _elseif(ch = 'A');
  23143.  
  23144.  
  23145.          _else;
  23146.  
  23147.             _elseif(ch = 'B');
  23148.  
  23149.  
  23150.             _else;
  23151.  
  23152.  
  23153.                _elseif(ch = 'C');
  23154.  
  23155.  
  23156.                _else;
  23157.  
  23158.  
  23159.                   _elseif(ch = 'Q');
  23160.  
  23161.  
  23162.                   _else;
  23163.  
  23164.                   _eend; 
  23165.               _eend; 
  23166.             _eend; 
  23167.          _eend;
  23168.  
  23169.  
  23170.          _WEND; 
  23171.          _closedatabase(); 
  23172.          _MEND;
  23173.  
  23174.  
  23175.  
  23176.  
  23177.          Osiris SE         Technical Reference Manual        Page 400
  23178.  
  23179.          TIP: When you nest ELSEIF statements, always enter all  three   
  23180.          sections
  23181.  
  23182.          _ELSEIF(); 
  23183.          _ELSE; 
  23184.          _EEND;
  23185.  
  23186.          in a row before doing ANYTHING else. That way, you'll  always   
  23187.          have  the correct number of matching ELSE's and EEND's to  go   
  23188.          with  the  ELSEIF's. Then you can go in-between and  add  the   
  23189.          rest of the code.
  23190.  
  23191.          We'll  add  each option as a procedure rather than  stick  it   
  23192.          between  the correct ELSEIF and ELSE so things are easier  to   
  23193.          read.
  23194.  
  23195.          Lets take the most obvious one, ELSEIF(CH = 'Q'), first.
  23196.  
  23197.  
  23198.  
  23199.  
  23200.  
  23201.  
  23202.  
  23203.  
  23204.  
  23205.  
  23206.  
  23207.  
  23208.  
  23209.  
  23210.  
  23211.  
  23212.  
  23213.  
  23214.  
  23215.  
  23216.  
  23217.  
  23218.  
  23219.  
  23220.  
  23221.  
  23222.  
  23223.  
  23224.  
  23225.  
  23226.  
  23227.  
  23228.  
  23229.  
  23230.  
  23231.  
  23232.          Osiris SE         Technical Reference Manual        Page 401
  23233.  
  23234.          _OPENDATABASE("C:\OSIRIS\VETLINK"); 
  23235.          _DEFINE_VAR(NOT_DONE,INTEGER); 
  23236.          _DEFINE_VAR(CH,CHARACTER);
  23237.  
  23238.          _ASSIGN(NOT_DONE,1);
  23239.  
  23240.          _WHILE(NOT_DONE);
  23241.  
  23242.          _CLS();
  23243.  
  23244.          _sprint("A) Within A Specific Area Code\n"); 
  23245.          _sprint("B) Within A Specific City\n"); 
  23246.          _sprint("C) Within A Specific State\n\n"); 
  23247.          _sprint("Q) Quit \n\n"); 
  23248.          _sprint("Enter Selection ? "); 
  23249.          _getc(ch,1); 
  23250.          _cls();
  23251.  
  23252.          _elseif(ch = 'A');
  23253.  
  23254.          _else;
  23255.  
  23256.             _elseif(ch = 'B');
  23257.  
  23258.             _else;
  23259.  
  23260.                _elseif(ch = 'C');
  23261.  
  23262.                _else;
  23263.  
  23264.                   _elseif(ch = 'Q');
  23265.  
  23266.                      _clear(not_done);
  23267.  
  23268.                   _else;
  23269.  
  23270.                   _eend; 
  23271.               _eend; 
  23272.             _eend; 
  23273.          _eend;
  23274.  
  23275.          _WEND; 
  23276.          _closedatabase(); 
  23277.          _MEND;
  23278.  
  23279.  
  23280.  
  23281.  
  23282.  
  23283.  
  23284.  
  23285.  
  23286.  
  23287.          Osiris SE         Technical Reference Manual        Page 402
  23288.  
  23289.          If  'Q' is selected, all I have to do is clear NOT_DONE  (set   
  23290.          it  to  0)  and  you'll  drop out  of  the  loop.  The  while   
  23291.          'expression'   will  evaluate  FALSE (  0  always   evaluates   
  23292.          false   with single expression tests) , the database will  be   
  23293.          closed,  and the command file will stop executing, _MEND. 
  23294.  
  23295.  
  23296.          The  next  step, picking out the names of the  procedures  we   
  23297.          will use for the remaining three option. Try to use something   
  23298.          that  reflects  the procedures purpose, it'll  be  easier  to   
  23299.          read.
  23300.  
  23301.          I think we'll use: FINDAREA, FINDCITY, and FINDSTATE.
  23302.  
  23303.          Having decided on the names, lets add call statement to  what   
  23304.          we have in the appropriate ELSEIF spots:
  23305.  
  23306.  
  23307.  
  23308.  
  23309.  
  23310.  
  23311.  
  23312.  
  23313.  
  23314.  
  23315.  
  23316.  
  23317.  
  23318.  
  23319.  
  23320.  
  23321.  
  23322.  
  23323.  
  23324.  
  23325.  
  23326.  
  23327.  
  23328.  
  23329.  
  23330.  
  23331.  
  23332.  
  23333.  
  23334.  
  23335.  
  23336.  
  23337.  
  23338.  
  23339.  
  23340.  
  23341.  
  23342.          Osiris SE         Technical Reference Manual        Page 403
  23343.  
  23344.          _OPENDATABASE("C:\OSIRIS\VETLINK"); 
  23345.          _DEFINE_VAR(NOT_DONE,INTEGER); 
  23346.          _DEFINE_VAR(CH,CHARACTER);
  23347.  
  23348.          _ASSIGN(NOT_DONE,1);
  23349.  
  23350.          _WHILE(NOT_DONE);
  23351.  
  23352.          _CLS();
  23353.  
  23354.          _sprint("A) Within A Specific Area Code\n"); 
  23355.          _sprint("B) Within A Specific City\n"); 
  23356.          _sprint("C) Within A Specific State\n\n"); 
  23357.          _sprint("Q) Quit \n\n"); 
  23358.          _sprint("Enter Selection ? "); 
  23359.          _getc(ch,1); 
  23360.          _cls();
  23361.  
  23362.          _elseif(ch = 'A'); 
  23363.              _CALL(FINEAREA); 
  23364.          _else; 
  23365.             _elseif(ch = 'B'); 
  23366.               _CALL(FINDCITY); 
  23367.             _else; 
  23368.                _elseif(ch = 'C'); 
  23369.                   _CALL(FINDSTATE); 
  23370.                _else; 
  23371.                   _elseif(ch = 'Q'); 
  23372.                      _clear(not_done); 
  23373.                   _else; 
  23374.                   _eend; 
  23375.               _eend; 
  23376.             _eend; 
  23377.          _eend; 
  23378.          _WEND; 
  23379.          _closedatabase(); 
  23380.          _MEND;
  23381.  
  23382.  
  23383.          Now that we have the MAIN section of the program done, we get   
  23384.          to  the  tricky part, the procedures that actual  access  the   
  23385.          database.
  23386.  
  23387.          The  first  procedure we'll do is FINDAREA and  we  start  by   
  23388.          declaring the procedure with
  23389.  
  23390.          _procedure(areacode);
  23391.  
  23392.  
  23393.  
  23394.  
  23395.  
  23396.  
  23397.          Osiris SE         Technical Reference Manual        Page 404
  23398.  
  23399.          We're also going to need some variables to work with so we'll   
  23400.          declare  those. I'll explain what each one is for as  we  use   
  23401.          it.
  23402.  
  23403.  
  23404.          _define_var(acode,string(10)); 
  23405.          _define_var(ocode,string(10)); 
  23406.          _define_var(rtcode,integer);
  23407.  
  23408.          First step is to get the area code from the caller. Since the   
  23409.          area  code  is a 3 character or digit field,  we'll  use  the   
  23410.          masked_input  command to limit input to 3  characters.  We'll   
  23411.          also use a 999 mask to force the caller to enter numbers  and   
  23412.          not letters.
  23413.  
  23414.          _sprint("List systems in which area code ? "); 
  23415.          _masked_input(1,acode,"(999)");
  23416.  
  23417.          Ok, we've got the input now lets see if there is an INDEX KEY   
  23418.          that matches the area code. The function _LoadRecord is  used   
  23419.          to  load  the  first  record that  matches  the  key.  If  it   
  23420.          successfully  loads a record, it sets the RTCODE variable  to   
  23421.          1. If it doesn't it sets the code to 0.
  23422.  
  23423.  
  23424.          The correct syntax for _loadrecord is:
  23425.  
  23426.          _LoadRecord(rtcode,acode);
  23427.  
  23428.          The  key field, acode (what the caller typed in and the  area   
  23429.          code  he  is  looking for) is the second  variable.  All  KEY   
  23430.          fields  must be entered in a STRING CLASS variable.  You  can   
  23431.          CAST  the  fields contents into any VARIABLE CLASS  once  the   
  23432.          record has been loaded.
  23433.  
  23434.  
  23435.          NOTE:  You don't have to use those exact variable names,  you   
  23436.          can use any name you want.
  23437.  
  23438.          We now have:
  23439.  
  23440.          _procedure(areacode);
  23441.  
  23442.          _define_var(acode,string(10)); 
  23443.          _define_var(ocode,string(10)); 
  23444.          _define_var(rtcode,integer);
  23445.  
  23446.          _sprint("List systems in which area code ? "); 
  23447.          _masked_input(1,acode,"(999)"); 
  23448.          _LoadRecord(rtcode,acode);
  23449.  
  23450.  
  23451.  
  23452.          Osiris SE         Technical Reference Manual        Page 405
  23453.  
  23454.          Because  there may be more than one record that  matches  the   
  23455.          key, we can't simply print the record and return. We have  to   
  23456.          setup a loop that repeatedly displays the current record  and   
  23457.          gets  the  next  record. We also have  to  use  something  to   
  23458.          determine when the next record no longer matches the key.
  23459.  
  23460.          Since _LoadRecord and GetNextRecord always place 1 in  RTcode   
  23461.          ,  if a record was loaded, that's a good variable to use  for   
  23462.          LOOP  control.  There are other methods, but this one  is  as   
  23463.          good as any.
  23464.  
  23465.          _while(rtcode);
  23466.  
  23467.          _wend;
  23468.  
  23469.          The  section  of  code inside the  loop  should  display  the   
  23470.          current  record and get the next record. It must also do  the   
  23471.          test to determine WHEN we need to exit the loop.
  23472.  
  23473.          You  could put the display code inside the loop  itself,  but   
  23474.          since  all  three  of our procedures  will  be  displaying  a   
  23475.          record,  it  would require less code if we  put  the  display   
  23476.          record  in its own procedure and just call it from the  other   
  23477.          three, so we will and we'll call that procedure DISPLAY.
  23478.  
  23479.          Because we loaded the first record before entering the  loop,   
  23480.          the first thing we do INSIDE the loop is display the record.
  23481.  
  23482.          _while(rtcode); 
  23483.             _call(display);
  23484.  
  23485.          _wend;
  23486.  
  23487.          The  next  step is to get the next record. We can't  use  the   
  23488.          LOADRECORD  call a second time because it would  located  the   
  23489.          first  record  that matched and we'd just  continue  looping,   
  23490.          displaying  the same record over and over and over  and  over   
  23491.          and ......... 
  23492.  
  23493.          But,  if there are multiple records with the SAME  key,  they   
  23494.          will always be GROUPED together. After we find the first  one   
  23495.          with _LOADRECORD, a call to the function _GETNEXTRECORD  will   
  23496.          load  the next available record. It may or it may  not  match  
  23497.          the  KEY and that's what we have to determine.
  23498.  
  23499.  
  23500.  
  23501.  
  23502.  
  23503.  
  23504.  
  23505.  
  23506.  
  23507.          Osiris SE         Technical Reference Manual        Page 406
  23508.  
  23509.          So . . .
  23510.  
  23511.          _while(rtcode); 
  23512.            _call(display); 
  23513.            _GetNextRecord(rtcode); 
  23514.            _if(rtcode); 
  23515.            _endif; 
  23516.          _wend;
  23517.  
  23518.          We need to CHECK rtcode after the call to GETNEXTRECORD  just   
  23519.          in  case  the first matching key was the LAST record  in  the   
  23520.          database.  If  it  was, then we don't  need  to  do  anything   
  23521.          because RTcode will be 0 and the _while loop will terminate.
  23522.  
  23523.          If  RTcode  does contain 1, we have to determine if  the  key   
  23524.          field matches what we want. It could be the first record of a   
  23525.          NEW group of area codes.
  23526.  
  23527.          We  can't directly work with a database field so we  have  to   
  23528.          move it to a variable we can work with. That's why I  defined   
  23529.          ocode.  Ocode is a duplicate, defined using the same type  of   
  23530.          define_var,  as  the original acode (string used to  get  the   
  23531.          key, area code, from the caller).
  23532.  
  23533.          The  function  copyfrom is use to move the  contents  of  the   
  23534.          database field to the variable.
  23535.  
  23536.          E.g., Copyfrom(ocode,2); 
  23537.                               ^ 
  23538.                               | 
  23539.                 -------------- 
  23540.                | 
  23541.          Field 2 contains the area code.
  23542.  
  23543.          The variable ocode now contains the area code field from  the   
  23544.          current database record.
  23545.  
  23546.          Now we have to compare ocode with the original acode. If they   
  23547.          match,  then we have another record that matches the key.  If   
  23548.          they don't match, that means we've hit the next group of area   
  23549.          codes and we need to terminate the search. We'll use the  _IF   
  23550.          function to evaluate the test expression.
  23551.  
  23552.          _if(ocode != acode);
  23553.  
  23554.             _clear(rtcode);
  23555.  
  23556.          _endif;
  23557.  
  23558.  
  23559.  
  23560.  
  23561.  
  23562.          Osiris SE         Technical Reference Manual        Page 407
  23563.  
  23564.          Put it all together and we have:
  23565.  
  23566.          _procedure(areacode);
  23567.  
  23568.          _define_var(acode,string(10)); 
  23569.          _define_var(ocode,string(10)); 
  23570.          _define_var(rtcode,integer);
  23571.  
  23572.          _sprint("List systems in which area code ? "); 
  23573.          _masked_input(1,acode,"(999)"); 
  23574.          _LoadRecord(rtcode,acode);
  23575.  
  23576.          _while(rtcode); 
  23577.            _call(display); 
  23578.            _GetNextRecord(rtcode); 
  23579.            _if(rtcode); 
  23580.              _Copyfrom(ocode,2); 
  23581.             _if(ocode != acode); 
  23582.                  _clear(rtcode); 
  23583.             _endif; 
  23584.            _endif; 
  23585.          _wend; 
  23586.          _pend;
  23587.  
  23588.          A  procedure that will get the key from the caller, load  the   
  23589.          first matching record and loops, display each record until we   
  23590.          hit  an area code that doesn't match what we're looking  for.   
  23591.          At that point, you return to the main menu.
  23592.  
  23593.          You might ask, what if _loadrecord() fails to find the  first   
  23594.          matching key?
  23595.  
  23596.          Nothing,  RTCODE  is  set to 0 and the while  loop  is  never   
  23597.          entered. You'll simply return to the main menu.
  23598.  
  23599.          The next procedure we'll tackle is findcity. We start it  the   
  23600.          same way we did the findarea procedure.
  23601.  
  23602.          _procedure(findcity); 
  23603.          _define_var(city,string(27)); 
  23604.          _define_var(ocity,string(27)); 
  23605.          _define_var(rtcode,integer); 
  23606.         
  23607.  
  23608.          This  is almost identical to the findarea procedure except  I   
  23609.          used  slightly  different  names, more suited  to  what  this   
  23610.          procedure does.
  23611.  
  23612.          Like  the  findarea procedure, the first step is to  get  the   
  23613.          name of the city the caller wants to search for.
  23614.  
  23615.          _sprint("What City ? "); 
  23616.          _gets(city,26); 
  23617.          Osiris SE         Technical Reference Manual        Page 408
  23618.  
  23619.          Instead  of the masked_input command, I used gets. You  could   
  23620.          use  masked_input,  but  I wanted to  show  you  a  different   
  23621.          method.
  23622.  
  23623.          Since  CITY  is  not  the  index  field,  we  can't  use  the   
  23624.          LOADRECORD command, it only works on the INDEX field.
  23625.  
  23626.          When  you  search on a non-indexed field, you have  to  start   
  23627.          with  the  first  record in the database and  look  at  every   
  23628.          single  record.  Non-indexed  searching is  not  exactly  the   
  23629.          fastest  method of locating a record, but your  more  complex   
  23630.          searches  generally  have  to  use  this  method,  even  with   
  23631.          database programs like Dbase IV or RBASE 5000.
  23632.  
  23633.          To load the first record in the database, we use the function   
  23634.          _SetToFirstRecord.  Unlike _loadrecord, settofirstrecord does   
  23635.          NOT set RTCODE, there is no possible error because there will   
  23636.          always be a first record, so you will have to set rtcode to 1   
  23637.          so the while loop will execute.
  23638.  
  23639.          _assign(rtcode,1);
  23640.  
  23641.          Ok, we now have
  23642.  
  23643.          _procedure(findcity); 
  23644.          _define_var(city,string(27)); 
  23645.          _define_var(ocity,string(27)); 
  23646.          _define_var(rtcode,integer);
  23647.  
  23648.          _sprint("What City ? "); 
  23649.          _gets(city,26); 
  23650.          _assign(rtcode,1); 
  23651.          _SetToFirstRecord();
  23652.  
  23653.          The  rest of the procedure is almost identical  to  FINDAREA,   
  23654.          with a few small changes. 
  23655.  
  23656.          The city is held in field 5 so 
  23657.  
  23658.          _copyfrom(ocity,5);
  23659.  
  23660.          Since we're going to search from the first record to the very   
  23661.          last record, we don't need the test 
  23662.  
  23663.          _if(ocity != city); 
  23664.                  _clear(rtcode); 
  23665.          _endif;
  23666.  
  23667.          We'll  just  let the getnextrecord terminate the  while  loop   
  23668.          when it reaches the last record.
  23669.  
  23670.  
  23671.  
  23672.          Osiris SE         Technical Reference Manual        Page 409
  23673.  
  23674.          Because we're loading and looking at each record, we do  have   
  23675.          to  test the record to see if it matches what  we're  looking   
  23676.          for so we need 
  23677.  
  23678.          _if(ocity = city);
  23679.  
  23680.                _call(display);
  23681.  
  23682.          _endif;
  23683.  
  23684.  
  23685.          If it matches THEN display the record.
  23686.  
  23687.          The entire procedure:
  23688.  
  23689.          _procedure(findcity); 
  23690.          _define_var(city,string(27)); 
  23691.          _define_var(ocity,string(27)); 
  23692.          _define_var(rtcode,integer);
  23693.  
  23694.          _sprint("What City ? "); 
  23695.          _gets(city,26); 
  23696.          _assign(rtcode,1); 
  23697.          _SetToFirstRecord();
  23698.  
  23699.  
  23700.          _while(rtcode);
  23701.  
  23702.            _copyfrom(ocity,5); 
  23703.            _if(ocity = city);
  23704.  
  23705.                _call(display);
  23706.  
  23707.            _endif; 
  23708.            _GetNextRecord(rtcode); 
  23709.          _wend; 
  23710.          _pend;
  23711.  
  23712.  
  23713.  
  23714.  
  23715.  
  23716.  
  23717.  
  23718.  
  23719.  
  23720.  
  23721.  
  23722.  
  23723.  
  23724.  
  23725.  
  23726.  
  23727.          Osiris SE         Technical Reference Manual        Page 410
  23728.  
  23729.          The  last  procedure  we  have to setup,  for  the  menu,  is   
  23730.          FINDSTATE.
  23731.  
  23732.          FINDSTATE  is almost IDENTICAL to FINDCITY, with a couple  of   
  23733.          obvious  differences  so I'm not going to explain it,  but  I   
  23734.          will display it.
  23735.  
  23736.          _procedure(findstate); 
  23737.          _define_var(state,string(3)); 
  23738.          _define_var(ostate,string(3)); 
  23739.          _define_var(rtcode,integer);
  23740.  
  23741.          _sprint("List systems in which State ? "); 
  23742.          _masked_input(1,state,"AA."); 
  23743.          _SetToFirstRecord(); 
  23744.          _assign(rtcode,1); 
  23745.          _while(rtcode);
  23746.  
  23747.            _copyfrom(ostate,4); 
  23748.            _if(ostate = state); 
  23749.                _call(display); 
  23750.            _endif; 
  23751.            _GetNextRecord(rtcode);
  23752.  
  23753.          _wend; 
  23754.          _pend;
  23755.  
  23756.  
  23757.          The  Last procedure our program needs is DISPLAY.  The  first   
  23758.          steps, define the procedure and setup the variables we'll use   
  23759.          in  this  procedure. The procedure isn't complicated  and  so   
  23760.          there isn't any need for a detailed explanation.  Look at  it   
  23761.          and  then  I'll touch on a few of things that  might  confuse   
  23762.          you.
  23763.  
  23764.  
  23765.  
  23766.  
  23767.  
  23768.  
  23769.  
  23770.  
  23771.  
  23772.  
  23773.  
  23774.  
  23775.  
  23776.  
  23777.  
  23778.  
  23779.  
  23780.  
  23781.  
  23782.          Osiris SE         Technical Reference Manual        Page 411
  23783.  
  23784.          _procedure(display);
  23785.  
  23786.          _define_var(s1,string(81)); 
  23787.          _define_var(a1,integer); 
  23788.          _define_var(b1,integer); 
  23789.          _define_var(c1,integer); 
  23790.          _define_var(mask,string(81));
  23791.  
  23792.          _cls(); 
  23793.          _copyfrom(s1,1); 
  23794.          _printf("BBS   : %s\n",s1); 
  23795.          _copyfrom(a1,2); 
  23796.          _copyfrom(b1,3); 
  23797.          _copyfrom(c1,4); 
  23798.          _sprintf(s1,"%d%d%d",a1,b1,c1); 
  23799.          _make_mask(mask,s1,"(999) 999-9999"); 
  23800.          _printf("%s",mask); 
  23801.          _printf("PHONE : %s\n",mask); 
  23802.          _copyfrom(s1,5); 
  23803.          _printf("CITY  : %s\n",s1); 
  23804.          _copyfrom(s1,6); 
  23805.          _sprint("STATE : %s\n\n",s1); 
  23806.          _printf("Press any key to continue "); 
  23807.          _getc(ch,0); 
  23808.          _cls(); 
  23809.          _pend;
  23810.  
  23811.          The section
  23812.  
  23813.          _copyfrom(a1,2); 
  23814.          _copyfrom(b1,3); 
  23815.          _copyfrom(c1,4);
  23816.  
  23817.          moves  the  contents  of fields  2,3,4  to  their  respective   
  23818.          variables  which I defined as INTEGER CLASS variables. I  did   
  23819.          this  to show you how field casting works. 
  23820.  
  23821.          Since the numeric values of fields 2,3, and 4 will fit in  an   
  23822.          INTEGER  class  variable, I decided to CAST the  fields  into   
  23823.          those types of variables and then use the make_mask to create   
  23824.          a  display string in the format of (314)  334-6359,  assuming   
  23825.          that phone number was in this record.
  23826.  
  23827.          You could have done:
  23828.  
  23829.          _copyfrom(s1,2); 
  23830.          _printf("(%s) ",s1); 
  23831.          _copyfrom(s1,3); 
  23832.          _printf("%s",s1); 
  23833.          _copyfrom(s1,4); 
  23834.          _printf("-%s\n\n",s1);
  23835.  
  23836.          The results would be the same. 
  23837.          Osiris SE         Technical Reference Manual        Page 412
  23838.  
  23839.                            Spl/I, A Functional Example
  23840.  
  23841.  
  23842.          Below  is the Quick Service LOGON SPL/I command file used  on   
  23843.          Vetlink  #3,  one of our systems. This is  a  complete  SPL/I   
  23844.          command program.
  23845.  
  23846. _define_var(s1,string(81)); 
  23847. _define_var(dirty,integer); 
  23848. _define_var(ch,character); 
  23849. _define_var(not_done,integer); 
  23850. _define_var(row,integer); 
  23851. _define_var(col,integer); 
  23852. _define_var(rtcode,integer); 
  23853. _define_var(baud,integer); 
  23854. _define_var(node,integer); 
  23855. _define_var(serial,integer); 
  23856. _define_var(first_time,integer); 
  23857. _assign(first_time,1); 
  23858. _assign(node,_NODE); 
  23859. _assign(serial,_PORT); 
  23860. _assign(not_done,1); 
  23861. _assign(baud,_BRATE);
  23862.  
  23863. _assign(dirty,1); 
  23864. _cls(); 
  23865. _while(not_done);
  23866.  
  23867.  
  23868. _if(_ANSI = 0 .OR. dirty = 1);
  23869.  
  23870.     _display_text("w4");
  23871.  
  23872. _endif;
  23873.  
  23874. _assign(dirty,1);
  23875.  
  23876. _elseif(_ANSI);
  23877.  
  23878.      _sprint("         "); 
  23879.      _color(2); 
  23880.      _sprint("What'll it be ( "); 
  23881.      _color(30); 
  23882.      _sprint("X = Main BBS Program "); 
  23883.      _color(2); 
  23884.      _sprint(") "); 
  23885.      _color(15); 
  23886.      _sprint("? "); 
  23887.      _color(7); 
  23888.      _if(first_time); 
  23889.          _curget(row,col); 
  23890.          _clear(first_time); 
  23891.          _call(specialmsg); 
  23892.          Osiris SE         Technical Reference Manual        Page 413
  23893.  
  23894.          _locate(row,col); 
  23895.      _endif;
  23896.  
  23897.      _getc(ch,1); 
  23898. _sprint("\r                                                            \r");
  23899.  
  23900.      _curget(row,col);
  23901.  
  23902. _else; 
  23903.    _sprint("         What'll it be ( X = Main BBS Program ) ? "); 
  23904.    _getc(ch,1);
  23905.  
  23906. _eend;
  23907.  
  23908. _elseif(ch = 'X'); 
  23909.    _clear(not_done); 
  23910. _else; 
  23911.      _elseif(ch = 'I');
  23912.  
  23913.            _push_into_queue("I512?.ARJ"); 
  23914.            _cls(); 
  23915.            _global_download();
  23916.  
  23917.      _else;
  23918.  
  23919.          _elseif(ch = 'O');
  23920.  
  23921.            _push_into_queue("SE302?.ARJ"); 
  23922.            _cls(); 
  23923.            _global_download();
  23924.  
  23925.          _else;
  23926.  
  23927.            _elseif(ch = 'T');
  23928.  
  23929.               _push_into_queue("Tmod???.ARJ"); 
  23930.               _cls(); 
  23931.               _global_download();
  23932.  
  23933.            _else;
  23934.  
  23935.               _elseif(ch = 'D');
  23936.  
  23937.                 _display_text("help");
  23938.  
  23939.               _else;
  23940.  
  23941.                  _elseif(ch = 'A');
  23942.  
  23943.                     _push_into_queue("arcshell.ARJ"); 
  23944.                     _cls(); 
  23945.                     _global_download();
  23946.  
  23947.          Osiris SE         Technical Reference Manual        Page 414
  23948.  
  23949.                  _else;
  23950.  
  23951.                     _elseif( ch = '?');
  23952.  
  23953.                        _display_text("c:\osiris\welcome4.scr"); 
  23954.                        _printf("\nPress any key to continue.\n"); 
  23955.                        _getc(ch,0); 
  23956.                        _cls();
  23957.  
  23958.                     _else;
  23959.  
  23960.                        _elseif(ch = 'L');
  23961.  
  23962.                           _post_msg_to_sysop(); 
  23963.                           _drop_carrier(); 
  23964.                           _cls();
  23965.  
  23966.                        _else;
  23967.  
  23968.                           _elseif(ch = 'G');
  23969.  
  23970.                              _send_file(rtcode,"user.zip");
  23971.  
  23972.                           _else;
  23973.  
  23974.                              _elseif(ch = 'P');
  23975.  
  23976.                                 _drop_carrier();
  23977.  
  23978.                               _else;
  23979.  
  23980.                                  _elseif(ch = 'C'); 
  23981.                                  _cls(); 
  23982.              _sprintf(s1,"tntbbs -B %d -P %d -N %d",baud,serial,node); 
  23983.                                  _execute(640,s1,rtcode);
  23984.  
  23985.                                  _else; 
  23986.                                     _elseif(ch == 'V'); 
  23987.                                        _call(vetlink); 
  23988.                                     _else;
  23989.  
  23990.                                      _call(errormsg); 
  23991.                                      _if(_ANSI); 
  23992.                                         _locate(row,col); 
  23993.                                         _clear(dirty); 
  23994.                                      _endif; 
  23995.                                      _eend; 
  23996.                                  _eend;
  23997.  
  23998.                              _eend;
  23999.  
  24000.                           _eend;
  24001.  
  24002.          Osiris SE         Technical Reference Manual        Page 415
  24003.  
  24004.                        _eend;
  24005.  
  24006.                     _eend;
  24007.  
  24008.                  _eend;
  24009.  
  24010.               _eend;
  24011.  
  24012.            _eend;
  24013.  
  24014.          _eend;
  24015.  
  24016.  
  24017.      _eend; 
  24018. _eend; 
  24019. _wend; 
  24020. _cls(); 
  24021. _Mend;
  24022.  
  24023.  
  24024.  
  24025. _procedure(errormsg);
  24026.  
  24027. _if(_ANSI); 
  24028.        _openwindow(1,8,22,10,51,1,13); 
  24029.        _locate(8,22); 
  24030.        _sprint("That Is "); 
  24031.        _color(30); 
  24032.        _sprint("\aNOT "); 
  24033.        _color(7); 
  24034.        _sprint("a valid selection."); 
  24035.        _locate(10,25); 
  24036.        _sprint("Press RETURN to Continue"); 
  24037.        _getc(ch,0); 
  24038.        _closewindow(1); 
  24039.        _sprint(""); 
  24040. _Endif; 
  24041. _pend;
  24042.  
  24043. _procedure(specialmsg);
  24044.  
  24045.        _openwindow(1,8,15,15,52,1,13); 
  24046.        _locate(8,15); 
  24047.        _color(15); 
  24048.        _sprint("Some of our special services, mostly"); 
  24049.        _locate(9,15); 
  24050.        _sprint("slash commands located at the main"); 
  24051.        _locate(10,15); 
  24052.        _sprint("menu will be down for a few days while"); 
  24053.        _locate(11,15); 
  24054.        _sprint("we change them over to the new format."); 
  24055.        _locate(13,15); 
  24056.        _sprint("Thank you."); 
  24057.          Osiris SE         Technical Reference Manual        Page 416
  24058.  
  24059.        _locate(15,21); 
  24060.        _sprint("Press any key to continue."); 
  24061.        _getc(ch,0); 
  24062.        _closewindow(1); 
  24063.        _sprint(""); 
  24064. _pend;
  24065.  
  24066. _procedure(vetlink);
  24067.  
  24068. _define_var(not_done,integer); 
  24069. _define_var(row,integer); 
  24070. _define_var(col,integer); 
  24071. _define_var(dirty,integer); 
  24072. _assign(dirty,1); 
  24073. _opendatabase("Vetlink"); 
  24074. _assign(not_done,1);
  24075.  
  24076. _while(not_done); 
  24077. _if(dirty); 
  24078. _clear(dirty); 
  24079. _cls(); 
  24080. _sprint("CVETLINK III\n"); 
  24081. _sprint("CPresents\n"); 
  24082. _sprint("CVIETNAM_VET DISTRIBUTION DATABASE\n\n"); 
  24083. _sprint("CA. List BBS Systems In A Specific Area Code.\n"); 
  24084. _sprint("CS. List BBS Systems In A Specific State.\n"); 
  24085. _sprint("CC. List BBS Systems In A Specific City.\n\n"); 
  24086. _sprint("CQ. Quit VIETNAM_VET Echo Distribution System.\n\n"); 
  24087. _curget(row,col); 
  24088. _math(col = col + 11); 
  24089. _endif; 
  24090. _locate(row,col); 
  24091. _color(2); 
  24092. _sprint("Selection Please "); 
  24093. _color(15); 
  24094. _sprint("? "); 
  24095. _color(7); 
  24096. _getc(ch,1); 
  24097. _locate(row,col); 
  24098. _sprint("                     "); 
  24099. _elseif(ch = 'A');
  24100.  
  24101.    _call(areacode);
  24102.  
  24103. _else;
  24104.  
  24105.   _elseif(ch = 'S');
  24106.  
  24107.       _call(findstate);
  24108.  
  24109.   _else;
  24110.  
  24111.       _elseif(ch = 'C'); 
  24112.          Osiris SE         Technical Reference Manual        Page 417
  24113.  
  24114.         _call(findcity);
  24115.  
  24116.       _else; 
  24117.          _elseif(ch = 'Q');
  24118.  
  24119.             _clear(not_done);
  24120.  
  24121.          _else;
  24122.  
  24123.             _call(errormsg);
  24124.  
  24125.          _eend;
  24126.  
  24127.       _eend;
  24128.  
  24129.   _eend;
  24130.  
  24131. _eend;
  24132.  
  24133.  
  24134.  
  24135. _wend; 
  24136. _cls(); 
  24137. _CloseDataBase(); 
  24138. _Pend;
  24139.  
  24140. _procedure(areacode); 
  24141. _define_var(acode,string(10)); 
  24142. _define_var(ocode,string(10)); 
  24143. _define_var(total,integer); 
  24144. _define_var(rtcode,integer);
  24145.  
  24146. _color(2); 
  24147. _clear(total); 
  24148. _openwindow(1,6,10,8,55,1,3); 
  24149. _locate(7,10); 
  24150. _sprint("List systems in which area code ? "); 
  24151. _masked_input(1,acode,"(999)"); 
  24152. _LoadRecord(rtcode,acode); 
  24153. _openwindow(2,9,19,15,60,1,13);
  24154.  
  24155.  
  24156. _while(rtcode);
  24157.  
  24158.   _++(total); 
  24159.   _call(display); 
  24160.   _GetNextRecord(rtcode); 
  24161.   _if(rtcode);
  24162.  
  24163.      _copyfrom(ocode,1); 
  24164.      _if(ocode != acode); 
  24165.          _clear(rtcode); 
  24166.      _endif; 
  24167.          Osiris SE         Technical Reference Manual        Page 418
  24168.  
  24169.   _endif;
  24170.  
  24171. _wend;
  24172.  
  24173. _color(7); 
  24174. _elseif(total > 0); 
  24175.   _locate(12,31); 
  24176.   _printf("Found %3d systems.",total);
  24177.  
  24178. _else; 
  24179.   _locate(12,25); 
  24180.   _printf("I'm sorry, no systems listed!");
  24181.  
  24182. _eend; 
  24183. _locate(15,24); 
  24184. _printf("Press any key to continue . . ."); 
  24185. _getc(ch,0); 
  24186. _closewindow(2); 
  24187. _closewindow(1); 
  24188. _pend;
  24189.  
  24190. _procedure(display);
  24191.  
  24192. _define_var(s1,string(81)); 
  24193. _define_var(a1,integer); 
  24194. _define_var(b1,integer); 
  24195. _define_var(c1,integer); 
  24196. _define_var(mask,string(81));
  24197.  
  24198. _color(3); 
  24199. _locate(10,21); 
  24200. _sprint("BBS   : "); 
  24201. _color(15); 
  24202. _copyfrom(s1,6); 
  24203. _printf("%s",s1); 
  24204. _locate(11,21); 
  24205. _color(3); 
  24206. _sprint("PHONE : "); 
  24207. _color(15); 
  24208. _copyfrom(a1,1); 
  24209. _copyfrom(b1,2); 
  24210. _copyfrom(c1,3); 
  24211. _sprintf(s1,"%d%d%d",a1,b1,c1); 
  24212. _make_mask(mask,s1,"(999) 999-9999"); 
  24213. _printf("%s",mask); 
  24214. _locate(12,21); 
  24215. _color(3); 
  24216. _sprint("CITY  : "); 
  24217. _color(15); 
  24218. _copyfrom(s1,5); 
  24219. _printf("%s",s1); 
  24220. _locate(13,21); 
  24221. _color(3); 
  24222.          Osiris SE         Technical Reference Manual        Page 419
  24223.  
  24224. _sprint("STATE : "); 
  24225. _color(15); 
  24226. _copyfrom(s1,4); 
  24227. _printf("%s",s1); 
  24228. _locate(15,27); 
  24229. _printf("Press any key to continue "); 
  24230. _getc(ch,0); 
  24231. _clearwindow(2); 
  24232. _pend;
  24233.  
  24234. _procedure(findstate); 
  24235. _define_var(state,string(10)); 
  24236. _define_var(ostate,string(10)); 
  24237. _define_var(total,integer); 
  24238. _define_var(rtcode,integer);
  24239.  
  24240. _color(2); 
  24241. _clear(total); 
  24242. _openwindow(1,6,10,8,55,1,3); 
  24243. _locate(7,10); 
  24244. _sprint("List systems in which State ? "); 
  24245. _masked_input(1,state,"AA."); 
  24246. _SetToFirstRecord(); 
  24247. _assign(rtcode,1); 
  24248. _openwindow(2,9,19,15,60,1,13); 
  24249. _while(rtcode);
  24250.  
  24251.   _copyfrom(ostate,4); 
  24252.   _if(ostate = state); 
  24253.       _++(total); 
  24254.       _call(display); 
  24255.   _endif; 
  24256.   _GetNextRecord(rtcode);
  24257.  
  24258. _wend;
  24259.  
  24260. _color(7); 
  24261. _elseif(total > 0); 
  24262.   _locate(12,31); 
  24263.   _printf("Found %3d systems.",total);
  24264.  
  24265. _else; 
  24266.   _locate(12,25); 
  24267.   _printf("I'm sorry, no systems listed!");
  24268.  
  24269. _eend; 
  24270. _locate(15,24); 
  24271. _printf("Press any key to continue . . ."); 
  24272. _getc(ch,0); 
  24273. _closewindow(2); 
  24274. _closewindow(1); 
  24275. _pend;
  24276.  
  24277.          Osiris SE         Technical Reference Manual        Page 420
  24278.  
  24279. _procedure(findcity); 
  24280. _define_var(city,string(20)); 
  24281. _define_var(ocity,string(20)); 
  24282. _define_var(total,integer); 
  24283. _define_var(rtcode,integer);
  24284.  
  24285. _color(2); 
  24286. _clear(total); 
  24287. _openwindow(1,6,10,8,55,1,3); 
  24288. _locate(7,10); 
  24289. _sprint("What City ? "); 
  24290. _masked_input(0,city,"XXXXXXXXXXXXXXXXXXXXX"); 
  24291. _SetToFirstRecord(); 
  24292. _assign(rtcode,1); 
  24293. _openwindow(2,9,19,15,60,1,13); 
  24294. _while(rtcode);
  24295.  
  24296.   _copyfrom(ocity,5); 
  24297.   _if(ocity = city); 
  24298.       _++(total); 
  24299.       _call(display); 
  24300.   _endif; 
  24301.   _GetNextRecord(rtcode);
  24302.  
  24303. _wend;
  24304.  
  24305. _color(7); 
  24306. _elseif(total > 0); 
  24307.   _locate(12,31); 
  24308.   _printf("Found %3d systems.",total);
  24309.  
  24310. _else; 
  24311.   _locate(12,25); 
  24312.   _printf("I'm sorry, no systems listed!");
  24313.  
  24314. _eend; 
  24315. _locate(15,24); 
  24316. _printf("Press any key to continue . . ."); 
  24317. _getc(ch,0); 
  24318. _closewindow(2); 
  24319. _closewindow(1); 
  24320. _pend;
  24321.  
  24322.  
  24323.  
  24324.  
  24325.  
  24326.  
  24327.  
  24328.  
  24329.  
  24330.  
  24331.  
  24332.          Osiris SE         Technical Reference Manual        Page 421
  24333.  
  24334.                              Itc, Itc2, And Itlink
  24335.  
  24336.                                       Itc.exe
  24337.  
  24338.               ITC.EXE is the main SPL/I compiler. It takes your source   
  24339.               code  and  turns it into OBJECT code.  ITC  expects  ALL   
  24340.               SOURCE code files to have the file extension .SCR 
  24341.  
  24342.               ITC requires one command line argument, the name of  the   
  24343.               source file MINUS the file extension, ITC will add that.
  24344.  
  24345.               Example
  24346.  
  24347.               ITC TEST
  24348.  
  24349.               This  will  compile  the SPL/I  source,  TEST.SRC,  into   
  24350.               TEST.OBJ.  This is not a RUNABLE SPL/I program file,  it   
  24351.               still has to be linked with ITlink.
  24352.  
  24353.  
  24354.               ITC can also accept an optional command line switch,  /P   
  24355.               or -P.
  24356.  
  24357.               This  tells the compiler that this source file is NOT  a   
  24358.               full functional program.
  24359.  
  24360.               This allows you to break your SPL/I program into smaller   
  24361.               modules and have the linker combine them for you.
  24362.  
  24363.               The  benefit  is:  You can break a  LARGE  program  into   
  24364.               smaller individual modules. If you have to fix a problem   
  24365.               in  one of them, you only have to recompile that  module   
  24366.               instead of the whole thing.
  24367.  
  24368.  
  24369.                                      Itlink.exe
  24370.  
  24371.               ITlink  takes  your  object file and turns  it  into  an   
  24372.               executable PRG file. 
  24373.  
  24374.               Assuming the OBJECT file was TEST.OBJ
  24375.  
  24376.               ITLINK TEST
  24377.  
  24378.               Notice  I  did not use the .OBJ extension,  ITlink  adds   
  24379.               that.
  24380.  
  24381.               The final output file: TEST.PRG
  24382.  
  24383.  
  24384.  
  24385.  
  24386.  
  24387.          Osiris SE         Technical Reference Manual        Page 422
  24388.  
  24389.  
  24390.                              Linking Multiple Object Modules
  24391.  
  24392.  
  24393.                    If  you break the program into multiple files,  you   
  24394.                    will  have to create a LINK control file.  Use  the   
  24395.                    same first name, up to the extension that you  used   
  24396.                    for the MAIN module ( the one with MEND in it), and   
  24397.                    the extension of .LNK
  24398.  
  24399.                    Example
  24400.  
  24401.  
  24402.                    Test.obj <= Main Program module 
  24403.                    Pro1.OBJ <= Contains a Procedure module 
  24404.                    PRO2.OBJ <= Contains a Procedure module
  24405.  
  24406.                    To compile: 
  24407.                          -------------------- 
  24408.                         V                     | 
  24409.                    ITC test /P                | 
  24410.                    ITC pro1 /P                | 
  24411.                    ITC pro2 /P                | 
  24412.                                               | 
  24413.                    Then Create a TEST.LNK ----
  24414.  
  24415.                    containing:
  24416.  
  24417.                    TEST 
  24418.                    PRO1 
  24419.                    PRO2
  24420.  
  24421.                    The first file you list MUST be MAIN, the one  with   
  24422.                    _MEND  in it. Then list the other object files,  in   
  24423.                    any order.
  24424.  
  24425.                    Now call ITlink to produce the finished product:
  24426.  
  24427.                    ITLINK TEST /P
  24428.  
  24429.                    Test is the name of the MAIN object file, and  also   
  24430.                    the  name of the LNK file. The /P tells the  linker   
  24431.                    that  it needs to use the LNK file to  combine  the   
  24432.                    individual  object files to produce the  executable   
  24433.                    PRG file.
  24434.  
  24435.                    The  file  ITLINK  will produce  is  TEST.PRG,  the   
  24436.                    executable SPL/I program.
  24437.  
  24438.  
  24439.  
  24440.  
  24441.  
  24442.          Osiris SE         Technical Reference Manual        Page 423
  24443.  
  24444.                    Say you found a bug in PRO1 and you have fixed  it.   
  24445.                    To generate a NEW TEST.PRG:
  24446.  
  24447.                    ITC PRO1 /P 
  24448.                    ITLINK TEST /P
  24449.  
  24450.                    You  did  not  have  to  recompile  the  other  two   
  24451.                    modules.
  24452.  
  24453.                    ITC2.EXE is a compiler SUBMODULE. Given the  amount   
  24454.                    of  memory  a compiler can consume, it  had  to  be   
  24455.                    split  into  two programs. You do  NOT  call  ITC2,   
  24456.                    that's handled by the other programs.
  24457.  
  24458.                                Compiler/Linker Limits
  24459.  
  24460.               You may not have more than 2000 _define_var() statements   
  24461.               in any program (even if you break it into modules).  The   
  24462.               compiler has to TRACK every single variable name and the   
  24463.               implicit  address  assigned to it, to make sure  no  two   
  24464.               ACTIVE  variables  get the same address.  Tracking  that   
  24465.               much  information does require a lot of memory. I  hope,   
  24466.               in version 2, to increase that to 16000.
  24467.  
  24468.               You may not have more than 1500 procedures in any  given   
  24469.               program.  The  reasons  are pretty much  the  same.  The   
  24470.               compiler  has  to  track each procedure  name  and  it's   
  24471.               implicit  address  so no two procedures get  assign  the   
  24472.               same address.
  24473.  
  24474.               Neither  limit  should  pose  any  problem  given   that   
  24475.               Osiris.exe doesn't even exceed those limits and I  don't   
  24476.               think you'll be writing anything as major as  OSIRIS.EXE   
  24477.               in SPL/I. 
  24478.  
  24479.                                       Run.exe
  24480.  
  24481.               Run.exe  is  an external TEST program that  can  execute   
  24482.               PRG's outside of Osiris. Run supports 99 percent of  the   
  24483.               SPL/I  commands in one form or another.  Some  commands,   
  24484.               mostly  internal Osiris commands, are supported  but  do   
  24485.               nothing but flash a message on the screen.
  24486.  
  24487.               Run.exe requires one command line argument, the name  of   
  24488.               the prg it is suppose to run.
  24489.  
  24490.               E.g., RUN TEST.PRG
  24491.  
  24492.               The first version of RUN does NOT trap for  non-existing   
  24493.               programs  and just assumes that the program will  exist.   
  24494.               If  you feed it a program name that does not  exist,  it   
  24495.               may lock-up.
  24496.  
  24497.          Osiris SE         Technical Reference Manual        Page 424
  24498.  
  24499.                                 Memo Databases
  24500.  
  24501.          A  memo database is a collection of variable  length  records   
  24502.          used to store large volumes of text in a single file.
  24503.  
  24504.          Unlike your traditional DATABASES, a memo database has no KEY   
  24505.          field, it simply has a record number. 
  24506.  
  24507.                                         Uses
  24508.  
  24509.               There are a number of possible uses for a memo database.   
  24510.               Storing  individual  articles from a newletter  or  some   
  24511.               other  ASCII  publication and allowing your  callers  to   
  24512.               pull  individual articles out of the database  and  view   
  24513.               them on-line.
  24514.  
  24515.               If an SPL/I application has a LOT of text displays,  you   
  24516.               could store the text in a memo database and pull it  out   
  24517.               for display when you need it. This would make the  SPL/I   
  24518.               application smaller and easier to manage.
  24519.  
  24520.                                         How
  24521.  
  24522.               There  is only one method of locating a memo record,  by   
  24523.               its  record number. You can access it using an  explicit   
  24524.               record number like 1, 2, 0, 27. 
  24525.  
  24526.               E.g., _IF(ch = 'B') 
  24527.                          display memo record 245 
  24528.                     _ENDIF;
  24529.  
  24530.               You  can  store the record number in  an  indexed  SPL/I   
  24531.               database field and use the btree index system to  locate   
  24532.               the  correct  database record and use the  2nd  database   
  24533.               field to hold the memo database record number. 
  24534.  
  24535.               That  sounds complex, but it really isn't. All you  have   
  24536.               to  do is create an SPL/I database with two fields.  The   
  24537.               first field would be the index field, something used  to   
  24538.               locate  the record . . . like article name.  The  second   
  24539.               field would be used to store the memo record number that   
  24540.               contains that article.
  24541.  
  24542.                                Making A Memo Database
  24543.  
  24544.               Making a memo database is fairly easy and only  requires   
  24545.               two steps.
  24546.  
  24547.               First,  use a text file to hold all the  records.  Start   
  24548.               each  record  with  ASCII 1 and  end  each  record  with   
  24549.               ASCII1.  The  first  line should be a  header  field  to   
  24550.               identify what the record contains, this is for YOUR use.
  24551.  
  24552.          Osiris SE         Technical Reference Manual        Page 425
  24553.  
  24554.          E.g.,
  24555.  
  24556.               ^AExplanation of a memo field   
  24557.               A  memo  database  is a collection  of  variable  length   
  24558.               records used to store large columns of text in a  single   
  24559.               file.
  24560.  
  24561.               Unlike  your traditional DATABASES, a memo database  has   
  24562.               no KEY field, it simply has a record number. 
  24563.               ^A 
  24564.  
  24565.               That  would be a complete memo record. Notice how it  is   
  24566.               enclosed  with  ASCII  1's AND the  first  line  is  the   
  24567.               header.  The header is NOT kept in the database  itself,   
  24568.               only the text
  24569.  
  24570.               "A  memo  database is a collection  of  variable  length   
  24571.               records used to store large volumes of text in a  single   
  24572.               file.
  24573.  
  24574.               Unlike  your traditional DATABASES, a memo database  has   
  24575.               no KEY field, it simply has a record number. 
  24576.               "
  24577.  
  24578.               will be retained.
  24579.  
  24580.               It  is  very important that you never  forget  that  the   
  24581.               first line is suppose to be a header. Failing to use the   
  24582.               first  line as a header line will cause the text  to  be   
  24583.               out of sync for that record.
  24584.  
  24585.               There is no practical limit on the number of memo  field   
  24586.               records you can store in one file.
  24587.  
  24588.               After you have constructed the text file containing your   
  24589.               records,  run the program MEMO.EXE. Memo.exe  takes  the   
  24590.               text file and converts it into database format.
  24591.  
  24592.               Memo requires one command line argument, the name of the   
  24593.               text   file.   Lets  assume  that  we  used   the   name   
  24594.               "INFOMALL.TXT".
  24595.  
  24596.  
  24597.  
  24598.  
  24599.  
  24600.  
  24601.  
  24602.  
  24603.  
  24604.  
  24605.  
  24606.  
  24607.          Osiris SE         Technical Reference Manual        Page 426
  24608.                
  24609.                                     Memo Infomall.txt
  24610.  
  24611.                    Memo   will  create  THREE   files;   INFOMALL.DAT,   
  24612.                    INFOMALL.IDX, and INFOMALL.LOG.
  24613.  
  24614.                    INFOMALL.DAT  and INFOMALL.IDX contains the  actual   
  24615.                    memo  records  and the index  to  the  infomall.dat   
  24616.                    file.        When        you        use         the   
  24617.                    _display_memo_record(Datafile,indexfile,Record#)   
  24618.                    call  you  would use these two names  in  place  of   
  24619.                    datafile and indexfile.
  24620.  
  24621.                    E.g., 
  24622.  
  24623.                    _display_memo_record("infomall.dat","infomall.idx",245);
  24624.  
  24625.                    The 3rd file, INFOMALL.LOG, contains the individual   
  24626.                    record HEADERS along with the memo record number.
  24627.  
  24628.                    E.g.
  24629.  
  24630.                    ^AExplanation of a memo field 
  24631.                    A memo database is a collection of variable  length   
  24632.                    records  used to store large volumes of text  in  a   
  24633.                    single file.
  24634.  
  24635.                    Unlike your traditional DATABASES, a memo  database   
  24636.                    has no KEY field, it simply has a record number. 
  24637.                    ^A 
  24638.  
  24639.                    One  of  the  lines in the  INFOMALL.LOG  would  be   
  24640.                    something like:
  24641.  
  24642.                    Memo Record #245 - Explanation of a memo field
  24643.  
  24644.                    This  is  what  you use to figure  out  which  memo   
  24645.                    record contains what! If I want to display the memo   
  24646.                    record  containing the text for "explanation  of  a   
  24647.                    memo field", I would just call for MEMO record 245.
  24648.  
  24649.          E.g.,
  24650.  
  24651.          _display_memo_record("infomall.dat","infomall.idx",245);
  24652.  
  24653.  
  24654.  
  24655.  
  24656.  
  24657.  
  24658.  
  24659.  
  24660.  
  24661.  
  24662.          Osiris SE         Technical Reference Manual        Page 427
  24663.  
  24664.                                       Mmu 
  24665.                              Multiple Menu Utility
  24666.  
  24667.          Osiris supports not only ASC (ASCII) and ANS (ANSI) files but   
  24668.          it also supports MMU files. 
  24669.  
  24670.          Normally you have two sets of files; ASC for non-ansi callers   
  24671.          and  ANS  for those that support ANSI. There  isn't  anything   
  24672.          wrong with this, but you do have TWO files for every menu  or   
  24673.          display screen and that eats up disk space.
  24674.  
  24675.          It would be a lot nicer to have only one file for BOTH  types   
  24676.          of  callers and let the BBS filter out the COLOR commands  if   
  24677.          the caller doesn't support ANSI. Well, that's what MMU does.
  24678.  
  24679.                                       Mmu.exe
  24680.  
  24681.               MMU will take an ANSI file and convert it to MMU  format   
  24682.               using  compressed color commands and then  compress  the   
  24683.               file to speed up display. If the caller doesn't  support   
  24684.               ANSI, Osiris will simply skip over the color commands.
  24685.  
  24686.               MMU is fairly simply to use, just enter the name of  the   
  24687.               file to convert. If the file is in ANSI format, add /A.
  24688.  
  24689.               E.g.,  Suppose you want to convert your main menu  file,   
  24690.               main.ans to MMU format. MAIN.ANS is in ansi format so  .   
  24691.                
  24692.               MMU MAIN.ANS /A
  24693.  
  24694.               creates the file "MAIN.MMU".
  24695.  
  24696.               You can now delete MAIN.ANS and MAIN.ASC and Osiris will   
  24697.               use MAIN.MMU for everyone.
  24698.  
  24699.               Suppose  you  have a display file, it does  NOT  contain   
  24700.               ANSI  characters,  but  you want to convert  it  to  MMU   
  24701.               format  to save disk space and to speed up the  display.   
  24702.               Lets call the file "HELPFILE.ASC".
  24703.  
  24704.               MMU HELPFILE.ASC
  24705.  
  24706.               Since  there are no ANSI commands, we don't use  the  /A   
  24707.               switch and the output file will be HELPFILE.ASC.
  24708.  
  24709.               There  is an optional switch, /F, that you MAY  want  to   
  24710.               use.  /F  controls  data  compression.  Normally,   data   
  24711.               compression is turned OFF. But, if the file contains  NO   
  24712.               BACKGROUND  COLOR  CHANGES,  you  would  get  a   faster   
  24713.               displaying file if you use /F.
  24714.  
  24715.  
  24716.          Osiris SE         Technical Reference Manual        Page 428
  24717.               E.g.,
  24718.  
  24719.               MMU MAIN.ANS /A /F
  24720.  
  24721.               Produces  a smaller MAIN.MMU and it is even faster  than   
  24722.               the first main.mmu we created.
  24723.  
  24724.                                   Command Line Switches
  24725.  
  24726.                    For more advanced users, there are several optional   
  24727.                    switches.
  24728.  
  24729.                    /A   Do conversion on <Infile>, when <Infile>  is   
  24730.                    in ANSIformat
  24731.  
  24732.                    /B   Place [breakoff] at top of file. Only if  '/A'   
  24733.                    is specified
  24734.  
  24735.                    /C    Place [Cls] at top of file. Only if  '/A'  is   
  24736.                    specified
  24737.  
  24738.                    /N   Do Color implants. Only if '/A' is specified
  24739.  
  24740.                    /M    Place [Moreoff] at top of file. Only if  '/A'   
  24741.                    is specified
  24742.  
  24743.                    /F    Data Optimizing ON (default is OFF) 
  24744.           
  24745.                    /25   Allow FULL 25 Line(s) (/A Only)
  24746.  
  24747.                    /O    Do conversions from ANSI to MMU  pre-compiler   
  24748.                    format ONLY. Only if '/A' is specified
  24749.  
  24750.                    /B    Place  breakoff  at the  top  of  the  file.   
  24751.                    Turning  break off means the caller cannot  break   
  24752.                    out  of the file. He has to wait until  the  entire   
  24753.                    file has been displayed.
  24754.  
  24755.                    /C    Place clear screen at the top of the file. 
  24756.  
  24757.                    /N    Do color implants. I've never ran  across  an   
  24758.                    ANSI file that required this, but if you compile an   
  24759.                    ANSI file and you flat can't get the colors to come   
  24760.                    out right, add this switch. 
  24761.  
  24762.                    /M    Place  MOREOFF at the top of the  file.  This   
  24763.                    disables  the PAUSE/MORE prompt while this file  is   
  24764.                    being  displayed. It is generally used for  OPENING   
  24765.                    welcome screens.
  24766.  
  24767.  
  24768.  
  24769.  
  24770.  
  24771.          Osiris SE         Technical Reference Manual        Page 429
  24772.  
  24773.                    /25   Do all 25 lines. MMU will optimize ANSI files   
  24774.                    created  by THEDRAW and other programs that save  a   
  24775.                    full  25  lines,  even if you don't  use  them,  by   
  24776.                    removing  the trailing lines. If, for some  reason,   
  24777.                    you want all 25 lines, add this switch.
  24778.  
  24779.                    /O    Do conversion from ANSI to pre-compiler  code   
  24780.                    format  and  then stop. This is generally  used  to   
  24781.                    convert ANSI files into a format that you can edit.
  24782.  
  24783.                                  Precompile Format
  24784.  
  24785.               The  pre-compiler  format would consist of  special  KEY   
  24786.               words encased in [].
  24787.  
  24788.               E.g., [YELLOW], [LTGREEN], etc.
  24789.  
  24790.               Keep  in  mind that the key words WOULD be  enclosed  in   
  24791.               square brackets.
  24792.  
  24793.               You  can, if you want, build a pre-compiled MMU file  by   
  24794.               hand and then compile it into a finished MMU file.  Just   
  24795.               leave OFF the /A.
  24796.  
  24797.               E.g.,  suppose you created WELCOME3.TXT containing  pre-  
  24798.               compiler commands.
  24799.  
  24800.               MMU WELCOME3.TXT /F
  24801.  
  24802.               Creates a compressed WELCOME3.MMU file.
  24803.  
  24804.               The  next  few pages will give you a break down  of  the   
  24805.               pre-compiler MMU commands and what they do.
  24806.  
  24807.                                     Mmu Commands
  24808.  
  24809.  
  24810.  
  24811.  
  24812.  
  24813.  
  24814.  
  24815.  
  24816.  
  24817.  
  24818.  
  24819.  
  24820.  
  24821.  
  24822.  
  24823.  
  24824.  
  24825.  
  24826.          Osiris SE         Technical Reference Manual        Page 430
  24827.   
  24828.          Summary 
  24829.   
  24830.          [Black] 
  24831.   
  24832.          Description 
  24833.   
  24834.          Changes  the  FOREGROUND  color  to  Black. Background  color   
  24835.          is not changed.
  24836.  
  24837.          Example 
  24838.   
  24839.          [BLACK]Hello world! 
  24840.   
  24841.          Causes HELLO WORLD! to be printed in Black. 
  24842.   
  24843.          NOTE:  If  Background  is also Black, the  message  would  be  
  24844.          invisible.
  24845.  
  24846.  
  24847.  
  24848.  
  24849.  
  24850.  
  24851.  
  24852.  
  24853.  
  24854.  
  24855.  
  24856.  
  24857.  
  24858.  
  24859.  
  24860.  
  24861.  
  24862.  
  24863.  
  24864.  
  24865.  
  24866.  
  24867.  
  24868.  
  24869.  
  24870.  
  24871.  
  24872.  
  24873.  
  24874.  
  24875.  
  24876.  
  24877.  
  24878.  
  24879.  
  24880.  
  24881.          Osiris SE         Technical Reference Manual        Page 431
  24882.  
  24883.          Summary 
  24884.   
  24885.          [Red] 
  24886.   
  24887.          Description 
  24888.   
  24889.          Changes the  FOREGROUND  color  to  Red, Background color  is   
  24890.          not changed.
  24891.  
  24892.   
  24893.          Example 
  24894.   
  24895.          [Red]Hello world! 
  24896.   
  24897.          Causes HELLO WORLD! to be printed in Red.
  24898.  
  24899.  
  24900.  
  24901.  
  24902.  
  24903.  
  24904.  
  24905.  
  24906.  
  24907.  
  24908.  
  24909.  
  24910.  
  24911.  
  24912.  
  24913.  
  24914.  
  24915.  
  24916.  
  24917.  
  24918.  
  24919.  
  24920.  
  24921.  
  24922.  
  24923.  
  24924.  
  24925.  
  24926.  
  24927.  
  24928.  
  24929.  
  24930.  
  24931.  
  24932.  
  24933.  
  24934.  
  24935.  
  24936.          Osiris SE         Technical Reference Manual        Page 432
  24937.  
  24938.          Summary 
  24939.   
  24940.          [Green] 
  24941.   
  24942.          Description 
  24943.   
  24944.          Changes  the  FOREGROUND  color  to  Green, Background  color   
  24945.          is not changed.
  24946.  
  24947.   
  24948.          Example 
  24949.   
  24950.          [GREEN]Hello world! 
  24951.   
  24952.          Causes HELLO WORLD! to be printed in Green.
  24953.  
  24954.  
  24955.  
  24956.  
  24957.  
  24958.  
  24959.  
  24960.  
  24961.  
  24962.  
  24963.  
  24964.  
  24965.  
  24966.  
  24967.  
  24968.  
  24969.  
  24970.  
  24971.  
  24972.  
  24973.  
  24974.  
  24975.  
  24976.  
  24977.  
  24978.  
  24979.  
  24980.  
  24981.  
  24982.  
  24983.  
  24984.  
  24985.  
  24986.  
  24987.  
  24988.  
  24989.  
  24990.  
  24991.          Osiris SE         Technical Reference Manual        Page 433
  24992.  
  24993.          Summary 
  24994.   
  24995.          [Blue] 
  24996.   
  24997.          Description 
  24998.   
  24999.          Changes the  FOREGROUND  color  to  Blue, Background color is   
  25000.          not changed.
  25001.  
  25002.          Example 
  25003.   
  25004.          [BLUE]Hello world! 
  25005.   
  25006.          Causes HELLO WORLD! to be printed in Blue.
  25007.  
  25008.  
  25009.  
  25010.  
  25011.  
  25012.  
  25013.  
  25014.  
  25015.  
  25016.  
  25017.  
  25018.  
  25019.  
  25020.  
  25021.  
  25022.  
  25023.  
  25024.  
  25025.  
  25026.  
  25027.  
  25028.  
  25029.  
  25030.  
  25031.  
  25032.  
  25033.  
  25034.  
  25035.  
  25036.  
  25037.  
  25038.  
  25039.  
  25040.  
  25041.  
  25042.  
  25043.  
  25044.  
  25045.  
  25046.          Osiris SE         Technical Reference Manual        Page 434
  25047.  
  25048.          Summary 
  25049.   
  25050.          [Yellow] 
  25051.   
  25052.          Description 
  25053.   
  25054.          Changes the  FOREGROUND  color  to  Yellow, Background  color   
  25055.          is not changed.
  25056.  
  25057.   
  25058.          Example 
  25059.   
  25060.          [Yellow]Hello world! 
  25061.   
  25062.          Causes HELLO WORLD! to be printed in yellow.
  25063.  
  25064.  
  25065.  
  25066.  
  25067.  
  25068.  
  25069.  
  25070.  
  25071.  
  25072.  
  25073.  
  25074.  
  25075.  
  25076.  
  25077.  
  25078.  
  25079.  
  25080.  
  25081.  
  25082.  
  25083.  
  25084.  
  25085.  
  25086.  
  25087.  
  25088.  
  25089.  
  25090.  
  25091.  
  25092.  
  25093.  
  25094.  
  25095.  
  25096.  
  25097.  
  25098.  
  25099.  
  25100.  
  25101.          Osiris SE         Technical Reference Manual        Page 435
  25102.  
  25103.          Summary 
  25104.   
  25105.          [Magenta] 
  25106.   
  25107.          Description 
  25108.   
  25109.          Changes the  FOREGROUND color  to  magenta, Background  color   
  25110.          is not changed. 
  25111.   
  25112.          Example 
  25113.   
  25114.          [MAGENTA]Hello world! 
  25115.   
  25116.          Causes HELLO WORLD! to be printed in Magenta.
  25117.  
  25118.  
  25119.  
  25120.  
  25121.  
  25122.  
  25123.  
  25124.  
  25125.  
  25126.  
  25127.  
  25128.  
  25129.  
  25130.  
  25131.  
  25132.  
  25133.  
  25134.  
  25135.  
  25136.  
  25137.  
  25138.  
  25139.  
  25140.  
  25141.  
  25142.  
  25143.  
  25144.  
  25145.  
  25146.  
  25147.  
  25148.  
  25149.  
  25150.  
  25151.  
  25152.  
  25153.  
  25154.  
  25155.  
  25156.          Osiris SE         Technical Reference Manual        Page 436
  25157.  
  25158.          Summary 
  25159.   
  25160.          [Cyan] 
  25161.   
  25162.          Description 
  25163.   
  25164.          Changes the  FOREGROUND  color  to  cyan, Background color is   
  25165.          not changed.
  25166.  
  25167.          Example 
  25168.   
  25169.          [CYAN]Hello world! 
  25170.   
  25171.          Causes HELLO WORLD! to be printed in cyan.
  25172.  
  25173.  
  25174.  
  25175.  
  25176.  
  25177.  
  25178.  
  25179.  
  25180.  
  25181.  
  25182.  
  25183.  
  25184.  
  25185.  
  25186.  
  25187.  
  25188.  
  25189.  
  25190.  
  25191.  
  25192.  
  25193.  
  25194.  
  25195.  
  25196.  
  25197.  
  25198.  
  25199.  
  25200.  
  25201.  
  25202.  
  25203.  
  25204.  
  25205.  
  25206.  
  25207.  
  25208.  
  25209.  
  25210.  
  25211.          Osiris SE         Technical Reference Manual        Page 437
  25212.  
  25213.          Summary 
  25214.   
  25215.          [White] 
  25216.   
  25217.          Description 
  25218.   
  25219.          Changes the  FOREGROUND  color  to  BRIGHT white,  Background   
  25220.          color is not changed. 
  25221.   
  25222.          Example 
  25223.   
  25224.          [WHITE]Hello world! 
  25225.   
  25226.          Causes HELLO WORLD! to be printed in white.
  25227.  
  25228.  
  25229.  
  25230.  
  25231.  
  25232.  
  25233.  
  25234.  
  25235.  
  25236.  
  25237.  
  25238.  
  25239.  
  25240.  
  25241.  
  25242.  
  25243.  
  25244.  
  25245.  
  25246.  
  25247.  
  25248.  
  25249.  
  25250.  
  25251.  
  25252.  
  25253.  
  25254.  
  25255.  
  25256.  
  25257.  
  25258.  
  25259.  
  25260.  
  25261.  
  25262.  
  25263.  
  25264.  
  25265.  
  25266.          Osiris SE         Technical Reference Manual        Page 438
  25267.  
  25268.          Summary 
  25269.   
  25270.          [Brown] 
  25271.   
  25272.          Description 
  25273.   
  25274.          Changes the  FOREGROUND  color  to Brown, Background color is   
  25275.          not changed.
  25276.  
  25277.          Example 
  25278.   
  25279.          [BROWN]Hello world! 
  25280.   
  25281.          Causes HELLO WORLD! to be printed in brown.
  25282.  
  25283.  
  25284.  
  25285.  
  25286.  
  25287.  
  25288.  
  25289.  
  25290.  
  25291.  
  25292.  
  25293.  
  25294.  
  25295.  
  25296.  
  25297.  
  25298.  
  25299.  
  25300.  
  25301.  
  25302.  
  25303.  
  25304.  
  25305.  
  25306.  
  25307.  
  25308.  
  25309.  
  25310.  
  25311.  
  25312.  
  25313.  
  25314.  
  25315.  
  25316.  
  25317.  
  25318.  
  25319.  
  25320.  
  25321.          Osiris SE         Technical Reference Manual        Page 439
  25322.  
  25323.          Summary 
  25324.   
  25325.          [Gray] 
  25326.   
  25327.          Description 
  25328.   
  25329.          Changes  the  FOREGROUND  color to gray, Background color  is   
  25330.          not changed.
  25331.  
  25332.          Example 
  25333.   
  25334.          [GRAY]Hello world! 
  25335.   
  25336.          Causes HELLO WORLD! to be printed in gray.
  25337.  
  25338.  
  25339.  
  25340.  
  25341.  
  25342.  
  25343.  
  25344.  
  25345.  
  25346.  
  25347.  
  25348.  
  25349.  
  25350.  
  25351.  
  25352.  
  25353.  
  25354.  
  25355.  
  25356.  
  25357.  
  25358.  
  25359.  
  25360.  
  25361.  
  25362.  
  25363.  
  25364.  
  25365.  
  25366.  
  25367.  
  25368.  
  25369.  
  25370.  
  25371.  
  25372.  
  25373.  
  25374.  
  25375.  
  25376.          Osiris SE         Technical Reference Manual        Page 440
  25377.  
  25378.          Summary 
  25379.   
  25380.          [Ltred] 
  25381.   
  25382.          Description 
  25383.   
  25384.          Changes the FOREGROUND color to light  red, Background  color   
  25385.          is not changed.
  25386.  
  25387.          Example 
  25388.   
  25389.          [LTRED]Hello world! 
  25390.   
  25391.          Causes HELLO WORLD! to be printed in light red.
  25392.  
  25393.  
  25394.  
  25395.  
  25396.  
  25397.  
  25398.  
  25399.  
  25400.  
  25401.  
  25402.  
  25403.  
  25404.  
  25405.  
  25406.  
  25407.  
  25408.  
  25409.  
  25410.  
  25411.  
  25412.  
  25413.  
  25414.  
  25415.  
  25416.  
  25417.  
  25418.  
  25419.  
  25420.  
  25421.  
  25422.  
  25423.  
  25424.  
  25425.  
  25426.  
  25427.  
  25428.  
  25429.  
  25430.  
  25431.          Osiris SE         Technical Reference Manual        Page 441
  25432.  
  25433.          Summary 
  25434.   
  25435.          [Ltgreen] 
  25436.   
  25437.          Description 
  25438.   
  25439.          Changes  the  FOREGROUND color to  light   green,  Background   
  25440.          color is not changed.
  25441.  
  25442.          Example 
  25443.   
  25444.          [LTGREEN]Hello world! 
  25445.   
  25446.          Causes HELLO WORLD! to be printed in light green.
  25447.  
  25448.  
  25449.  
  25450.  
  25451.  
  25452.  
  25453.  
  25454.  
  25455.  
  25456.  
  25457.  
  25458.  
  25459.  
  25460.  
  25461.  
  25462.  
  25463.  
  25464.  
  25465.  
  25466.  
  25467.  
  25468.  
  25469.  
  25470.  
  25471.  
  25472.  
  25473.  
  25474.  
  25475.  
  25476.  
  25477.  
  25478.  
  25479.  
  25480.  
  25481.  
  25482.  
  25483.  
  25484.  
  25485.  
  25486.          Osiris SE         Technical Reference Manual        Page 442
  25487.  
  25488.          Summary 
  25489.   
  25490.          [Ltblue] 
  25491.   
  25492.          Description 
  25493.   
  25494.          Changes the FOREGROUND color to light  blue, Background color   
  25495.          is not changed.
  25496.  
  25497.   
  25498.          Example 
  25499.   
  25500.          [LTBLUE]Hello world! 
  25501.   
  25502.          Causes HELLO WORLD! to be printed in light blue.
  25503.  
  25504.  
  25505.  
  25506.  
  25507.  
  25508.  
  25509.  
  25510.  
  25511.  
  25512.  
  25513.  
  25514.  
  25515.  
  25516.  
  25517.  
  25518.  
  25519.  
  25520.  
  25521.  
  25522.  
  25523.  
  25524.  
  25525.  
  25526.  
  25527.  
  25528.  
  25529.  
  25530.  
  25531.  
  25532.  
  25533.  
  25534.  
  25535.  
  25536.  
  25537.  
  25538.  
  25539.  
  25540.  
  25541.          Osiris SE         Technical Reference Manual        Page 443
  25542.  
  25543.          Summary 
  25544.   
  25545.          [Ltmagenta] 
  25546.   
  25547.          Description 
  25548.   
  25549.          Changes  the FOREGROUND color to light   magenta,  Background   
  25550.          color is not changed.
  25551.  
  25552.          Example 
  25553.   
  25554.          [LTMAGENTA]Hello world! 
  25555.   
  25556.          Causes HELLO WORLD! to be printed in light magenta.
  25557.  
  25558.  
  25559.  
  25560.  
  25561.  
  25562.  
  25563.  
  25564.  
  25565.  
  25566.  
  25567.  
  25568.  
  25569.  
  25570.  
  25571.  
  25572.  
  25573.  
  25574.  
  25575.  
  25576.  
  25577.  
  25578.  
  25579.  
  25580.  
  25581.  
  25582.  
  25583.  
  25584.  
  25585.  
  25586.  
  25587.  
  25588.  
  25589.  
  25590.  
  25591.  
  25592.  
  25593.  
  25594.  
  25595.  
  25596.          Osiris SE         Technical Reference Manual        Page 444
  25597.  
  25598.          Summary 
  25599.   
  25600.          [Ltcyan] 
  25601.   
  25602.          Description 
  25603.   
  25604.          Changes the FOREGROUND color to light  cyan, Background color   
  25605.          is not changed.
  25606.  
  25607.          Example 
  25608.   
  25609.          [LTCYAN]Hello world! 
  25610.   
  25611.          Causes HELLO WORLD! to be printed in light cyan.
  25612.  
  25613.  
  25614.  
  25615.  
  25616.  
  25617.  
  25618.  
  25619.  
  25620.  
  25621.  
  25622.  
  25623.  
  25624.  
  25625.  
  25626.  
  25627.  
  25628.  
  25629.  
  25630.  
  25631.  
  25632.  
  25633.  
  25634.  
  25635.  
  25636.  
  25637.  
  25638.  
  25639.  
  25640.  
  25641.  
  25642.  
  25643.  
  25644.  
  25645.  
  25646.  
  25647.  
  25648.  
  25649.  
  25650.  
  25651.          Osiris SE         Technical Reference Manual        Page 445
  25652.  
  25653.          Summary 
  25654.   
  25655.          [Blink] 
  25656.   
  25657.          Description 
  25658.   
  25659.          Causes the FOREGROUND color to BLINK.  
  25660.   
  25661.          Example 
  25662.   
  25663.          [BLINK][YELLOW]Hello world! 
  25664.   
  25665.          Causes HELLO WORLD! to be printed in Blinking YELLOW.
  25666.  
  25667.  
  25668.  
  25669.  
  25670.  
  25671.  
  25672.  
  25673.  
  25674.  
  25675.  
  25676.  
  25677.  
  25678.  
  25679.  
  25680.  
  25681.  
  25682.  
  25683.  
  25684.  
  25685.  
  25686.  
  25687.  
  25688.  
  25689.  
  25690.  
  25691.  
  25692.  
  25693.  
  25694.  
  25695.  
  25696.  
  25697.  
  25698.  
  25699.  
  25700.  
  25701.  
  25702.  
  25703.  
  25704.  
  25705.  
  25706.          Osiris SE         Technical Reference Manual        Page 446
  25707.  
  25708.          Summary 
  25709.   
  25710.          [Normal] 
  25711.   
  25712.          Description 
  25713.   
  25714.          Cause the FOREGROUND and BACKGROUND colors  to revert to  the   
  25715.          default IBM screen colors, cyan on black.
  25716.  
  25717.          This  call  MUST  be  used  to  cancel  the  Blinking  color   
  25718.          attribute. 
  25719.   
  25720.          Example 
  25721.   
  25722.          [NORMAL]Hello world! 
  25723.   
  25724.          Causes HELLO WORLD! to be printed in cyan on black.
  25725.  
  25726.  
  25727.  
  25728.  
  25729.  
  25730.  
  25731.  
  25732.  
  25733.  
  25734.  
  25735.  
  25736.  
  25737.  
  25738.  
  25739.  
  25740.  
  25741.  
  25742.  
  25743.  
  25744.  
  25745.  
  25746.  
  25747.  
  25748.  
  25749.  
  25750.  
  25751.  
  25752.  
  25753.  
  25754.  
  25755.  
  25756.  
  25757.  
  25758.  
  25759.  
  25760.  
  25761.          Osiris SE         Technical Reference Manual        Page 447
  25762.  
  25763.          Summary 
  25764.   
  25765.          [Bgblack] 
  25766.   
  25767.          Description 
  25768.   
  25769.          Changes the BACKGROUND color to BLACK. 
  25770.   
  25771.          ForeGround  color  and BLINK attribute, if desired,  MUST  be   
  25772.          Reset following a background color change. 
  25773.   
  25774.          Example 
  25775.   
  25776.          [BGBLACK][YELLOW]Hello world! 
  25777.   
  25778.          Causes HELLO WORLD! to be printed in YELLOW on BLACK.
  25779.  
  25780.  
  25781.  
  25782.  
  25783.  
  25784.  
  25785.  
  25786.  
  25787.  
  25788.  
  25789.  
  25790.  
  25791.  
  25792.  
  25793.  
  25794.  
  25795.  
  25796.  
  25797.  
  25798.  
  25799.  
  25800.  
  25801.  
  25802.  
  25803.  
  25804.  
  25805.  
  25806.  
  25807.  
  25808.  
  25809.  
  25810.  
  25811.  
  25812.  
  25813.  
  25814.  
  25815.  
  25816.          Osiris SE         Technical Reference Manual        Page 448
  25817.  
  25818.          Summary 
  25819.   
  25820.          [Bgred] 
  25821.   
  25822.          Description 
  25823.   
  25824.          Changes the BACKGROUND color to RED. 
  25825.   
  25826.          ForeGround  color  and BLINK attribute, if desired,  MUST  be   
  25827.          Reset following a background color change. 
  25828.   
  25829.          Example 
  25830.   
  25831.          [BGRED][YELLOW]Hello world! 
  25832.   
  25833.          Causes HELLO WORLD! to be printed in YELLOW on RED.
  25834.  
  25835.  
  25836.  
  25837.  
  25838.  
  25839.  
  25840.  
  25841.  
  25842.  
  25843.  
  25844.  
  25845.  
  25846.  
  25847.  
  25848.  
  25849.  
  25850.  
  25851.  
  25852.  
  25853.  
  25854.  
  25855.  
  25856.  
  25857.  
  25858.  
  25859.  
  25860.  
  25861.  
  25862.  
  25863.  
  25864.  
  25865.  
  25866.  
  25867.  
  25868.  
  25869.  
  25870.  
  25871.          Osiris SE         Technical Reference Manual        Page 449
  25872.  
  25873.          Summary 
  25874.   
  25875.          [Bggreen] 
  25876.   
  25877.          Description 
  25878.   
  25879.          Changes the BACKGROUND color to GREEN. 
  25880.   
  25881.          ForeGround  color  and BLINK attribute, if desired,  MUST  be   
  25882.          Reset following a background color change. 
  25883.   
  25884.          Example 
  25885.   
  25886.          [BGGREEN][YELLOW]Hello world! 
  25887.   
  25888.          Causes HELLO WORLD! to be printed in YELLOW on GREEN.
  25889.  
  25890.  
  25891.  
  25892.  
  25893.  
  25894.  
  25895.  
  25896.  
  25897.  
  25898.  
  25899.  
  25900.  
  25901.  
  25902.  
  25903.  
  25904.  
  25905.  
  25906.  
  25907.  
  25908.  
  25909.  
  25910.  
  25911.  
  25912.  
  25913.  
  25914.  
  25915.  
  25916.  
  25917.  
  25918.  
  25919.  
  25920.  
  25921.  
  25922.  
  25923.  
  25924.  
  25925.  
  25926.          Osiris SE         Technical Reference Manual        Page 450
  25927.  
  25928.          Summary 
  25929.   
  25930.          [Bgblue] 
  25931.   
  25932.          Description 
  25933.   
  25934.          Changes the BACKGROUND color to BLUE. 
  25935.   
  25936.          ForeGround  color  and BLINK attribute, if desired,  MUST  be   
  25937.          Reset following a background color change. 
  25938.   
  25939.          Example 
  25940.   
  25941.          [BGBLUE][YELLOW]Hello world! 
  25942.   
  25943.          Causes HELLO WORLD! to be printed in YELLOW on BLUE.
  25944.  
  25945.  
  25946.  
  25947.  
  25948.  
  25949.  
  25950.  
  25951.  
  25952.  
  25953.  
  25954.  
  25955.  
  25956.  
  25957.  
  25958.  
  25959.  
  25960.  
  25961.  
  25962.  
  25963.  
  25964.  
  25965.  
  25966.  
  25967.  
  25968.  
  25969.  
  25970.  
  25971.  
  25972.  
  25973.  
  25974.  
  25975.  
  25976.  
  25977.  
  25978.  
  25979.  
  25980.  
  25981.          Osiris SE         Technical Reference Manual        Page 451
  25982.  
  25983.          Summary 
  25984.   
  25985.          [Bgmagenta] 
  25986.   
  25987.          Description 
  25988.   
  25989.          Changes the BACKGROUND color to MAGENTA. 
  25990.   
  25991.          ForeGround  color  and BLINK attribute, if desired,  MUST  be   
  25992.          Reset following a background color change. 
  25993.   
  25994.          Example 
  25995.   
  25996.          [BGMAGENTA][YELLOW]Hello world! 
  25997.   
  25998.          Causes HELLO WORLD! to be printed in YELLOW on MAGENTA.
  25999.  
  26000.  
  26001.  
  26002.  
  26003.  
  26004.  
  26005.  
  26006.  
  26007.  
  26008.  
  26009.  
  26010.  
  26011.  
  26012.  
  26013.  
  26014.  
  26015.  
  26016.  
  26017.  
  26018.  
  26019.  
  26020.  
  26021.  
  26022.  
  26023.  
  26024.  
  26025.  
  26026.  
  26027.  
  26028.  
  26029.  
  26030.  
  26031.  
  26032.  
  26033.  
  26034.  
  26035.  
  26036.          Osiris SE         Technical Reference Manual        Page 452
  26037.  
  26038.          Summary 
  26039.   
  26040.          [Bgcyan] 
  26041.   
  26042.          Description 
  26043.   
  26044.          Changes the BACKGROUND color to CYAN. 
  26045.   
  26046.          ForeGround  color  and BLINK attribute, if desired,  MUST  be   
  26047.          Reset following a background color change. 
  26048.   
  26049.          Example 
  26050.   
  26051.          [BGCYAN][YELLOW]Hello world! 
  26052.   
  26053.          Causes HELLO WORLD! to be printed in YELLOW on CYAN.
  26054.  
  26055.  
  26056.  
  26057.  
  26058.  
  26059.  
  26060.  
  26061.  
  26062.  
  26063.  
  26064.  
  26065.  
  26066.  
  26067.  
  26068.  
  26069.  
  26070.  
  26071.  
  26072.  
  26073.  
  26074.  
  26075.  
  26076.  
  26077.  
  26078.  
  26079.  
  26080.  
  26081.  
  26082.  
  26083.  
  26084.  
  26085.  
  26086.  
  26087.  
  26088.  
  26089.  
  26090.  
  26091.          Osiris SE         Technical Reference Manual        Page 453
  26092.  
  26093.          Summary 
  26094.   
  26095.          [Bgwhite] 
  26096.   
  26097.          Description 
  26098.   
  26099.          Changes the BACKGROUND color to WHITE. 
  26100.   
  26101.          ForeGround  color  and BLINK attribute, if desired,  MUST  be   
  26102.          Reset following a background color change. 
  26103.   
  26104.          Example 
  26105.   
  26106.          [BGWHITE][BLUE]Hello world! 
  26107.   
  26108.          Causes HELLO WORLD! to be printed in BLUE on WHITE.
  26109.  
  26110.  
  26111.  
  26112.  
  26113.  
  26114.  
  26115.  
  26116.  
  26117.  
  26118.  
  26119.  
  26120.  
  26121.  
  26122.  
  26123.  
  26124.  
  26125.  
  26126.  
  26127.  
  26128.  
  26129.  
  26130.  
  26131.  
  26132.  
  26133.  
  26134.  
  26135.  
  26136.  
  26137.  
  26138.  
  26139.  
  26140.  
  26141.  
  26142.  
  26143.  
  26144.  
  26145.  
  26146.          Osiris SE         Technical Reference Manual        Page 454
  26147.  
  26148.          Summary 
  26149.   
  26150.          [Enter] 
  26151.   
  26152.          Description 
  26153.   
  26154.          Causes the display to STOP  until the caller presses RETURN. 
  26155.          This    is   generally   used   To   stop    display    files   
  26156.          from scrolling off the screen
  26157.  
  26158.          Example 
  26159.   
  26160.          It is time for all good men to step forward and be counted. 
  26161.   
  26162.          Press RETURN to Continue [enter]
  26163.  
  26164.  
  26165.  
  26166.  
  26167.  
  26168.  
  26169.  
  26170.  
  26171.  
  26172.  
  26173.  
  26174.  
  26175.  
  26176.  
  26177.  
  26178.  
  26179.  
  26180.  
  26181.  
  26182.  
  26183.  
  26184.  
  26185.  
  26186.  
  26187.  
  26188.  
  26189.  
  26190.  
  26191.  
  26192.  
  26193.  
  26194.  
  26195.  
  26196.  
  26197.  
  26198.  
  26199.  
  26200.  
  26201.          Osiris SE         Technical Reference Manual        Page 455
  26202.  
  26203.          Summary 
  26204.   
  26205.          [Breakoff] 
  26206.   
  26207.          Description 
  26208.   
  26209.          You  have the option of BREAKING out of a menu display,  etc.   
  26210.          by pressing ctrl-K. 
  26211.   
  26212.          If BREAKOFF  is used, I'll ignore the Ctrl-K request.
  26213.  
  26214.  
  26215.  
  26216.  
  26217.  
  26218.  
  26219.  
  26220.  
  26221.  
  26222.  
  26223.  
  26224.  
  26225.  
  26226.  
  26227.  
  26228.  
  26229.  
  26230.  
  26231.  
  26232.  
  26233.  
  26234.  
  26235.  
  26236.  
  26237.  
  26238.  
  26239.  
  26240.  
  26241.  
  26242.  
  26243.  
  26244.  
  26245.  
  26246.  
  26247.  
  26248.  
  26249.  
  26250.  
  26251.  
  26252.  
  26253.  
  26254.  
  26255.  
  26256.          Osiris SE         Technical Reference Manual        Page 456
  26257.  
  26258.          Summary 
  26259.   
  26260.          [Breakon] 
  26261.   
  26262.          Description 
  26263.   
  26264.          This  reenables Ctrl-K if it was shut off  with BREAKOFF.  
  26265.  
  26266.  
  26267.  
  26268.  
  26269.  
  26270.  
  26271.  
  26272.  
  26273.  
  26274.  
  26275.  
  26276.  
  26277.  
  26278.  
  26279.  
  26280.  
  26281.  
  26282.  
  26283.  
  26284.  
  26285.  
  26286.  
  26287.  
  26288.  
  26289.  
  26290.  
  26291.  
  26292.  
  26293.  
  26294.  
  26295.  
  26296.  
  26297.  
  26298.  
  26299.  
  26300.  
  26301.  
  26302.  
  26303.  
  26304.  
  26305.  
  26306.  
  26307.  
  26308.  
  26309.  
  26310.  
  26311.          Osiris SE         Technical Reference Manual        Page 457
  26312.  
  26313.          Summary 
  26314.   
  26315.          [Moreoff] 
  26316.   
  26317.          Description
  26318.  
  26319.          Every  time a complete line of text is displayed, one  ending   
  26320.          with  a  carriage return, a LINE counter is increased  by  1.   
  26321.          When  the  counter is greater than the number  of  lines  the   
  26322.          remote  terminal can handle, without scrolling the  top  line   
  26323.          off the screen, the -PAUSE- prompt is displayed.
  26324.  
  26325.          [MOREOFF] disables the -PAUSE- prompts until you turn it back   
  26326.          on OR you exit the current file. 
  26327.  
  26328.  
  26329.  
  26330.  
  26331.  
  26332.  
  26333.  
  26334.  
  26335.  
  26336.  
  26337.  
  26338.  
  26339.  
  26340.  
  26341.  
  26342.  
  26343.  
  26344.  
  26345.  
  26346.  
  26347.  
  26348.  
  26349.  
  26350.  
  26351.  
  26352.  
  26353.  
  26354.  
  26355.  
  26356.  
  26357.  
  26358.  
  26359.  
  26360.  
  26361.  
  26362.  
  26363.  
  26364.  
  26365.  
  26366.          Osiris SE         Technical Reference Manual        Page 458
  26367.   
  26368.          Summary 
  26369.   
  26370.          [Moreon] 
  26371.   
  26372.          Description 
  26373.   
  26374.          This  reenables  the line counter if it was  shut  off  with   
  26375.          [MOREOFF].   
  26376.  
  26377.  
  26378.  
  26379.  
  26380.  
  26381.  
  26382.  
  26383.  
  26384.  
  26385.  
  26386.  
  26387.  
  26388.  
  26389.  
  26390.  
  26391.  
  26392.  
  26393.  
  26394.  
  26395.  
  26396.  
  26397.  
  26398.  
  26399.  
  26400.  
  26401.  
  26402.  
  26403.  
  26404.  
  26405.  
  26406.  
  26407.  
  26408.  
  26409.  
  26410.  
  26411.  
  26412.  
  26413.  
  26414.  
  26415.  
  26416.  
  26417.  
  26418.  
  26419.  
  26420.  
  26421.          Osiris SE         Technical Reference Manual        Page 459
  26422.  
  26423.          Summary 
  26424.   
  26425.          [Cls] 
  26426.   
  26427.          Description 
  26428.   
  26429.          Clears the current display screen and positions the cursor at  
  26430.          0,0 on the screen.
  26431.  
  26432.  
  26433.  
  26434.  
  26435.  
  26436.  
  26437.  
  26438.  
  26439.  
  26440.  
  26441.  
  26442.  
  26443.  
  26444.  
  26445.  
  26446.  
  26447.  
  26448.  
  26449.  
  26450.  
  26451.  
  26452.  
  26453.  
  26454.  
  26455.  
  26456.  
  26457.  
  26458.  
  26459.  
  26460.  
  26461.  
  26462.  
  26463.  
  26464.  
  26465.  
  26466.  
  26467.  
  26468.  
  26469.  
  26470.  
  26471.  
  26472.  
  26473.  
  26474.  
  26475.  
  26476.          Osiris SE         Technical Reference Manual        Page 460
  26477.  
  26478.          Summary 
  26479.   
  26480.          [Run_program Prg_name] 
  26481.   
  26482.          Description 
  26483.   
  26484.          This lets you call SPL/I command files from within other text   
  26485.          files.  Replace PRG_NAME with the complete drive,  path,  and   
  26486.          name of the command file you want to execute.
  26487.  
  26488.  
  26489.          Example
  26490.  
  26491.          [RUN_PROGRAM C:\OSIRIS\PRG\QSRV.PRG]
  26492.  
  26493.  
  26494.  
  26495.  
  26496.  
  26497.  
  26498.  
  26499.  
  26500.  
  26501.  
  26502.  
  26503.  
  26504.  
  26505.  
  26506.  
  26507.  
  26508.  
  26509.  
  26510.  
  26511.  
  26512.  
  26513.  
  26514.  
  26515.  
  26516.  
  26517.  
  26518.  
  26519.  
  26520.  
  26521.  
  26522.  
  26523.  
  26524.  
  26525.  
  26526.  
  26527.  
  26528.  
  26529.  
  26530.  
  26531.          Osiris SE         Technical Reference Manual        Page 461
  26532.  
  26533.                            Osiris Language Database
  26534.  
  26535.          Osiris uses a language database to store the text and  colors   
  26536.          used  within the main Osiris.exe program. This means you  can   
  26537.          alter  any text display, change it to a  different  language,   
  26538.          and the colors Osiris uses.
  26539.  
  26540.          The  two  areas  that  do  not  use  the  language  database;   
  26541.          statistics system and Osage. Neither use it because both  are   
  26542.          POSITION/LENGTH sensitive, graphs and windows, and  modifying   
  26543.          the text would throw the displays out of whack.
  26544.  
  26545.          The  default language database is called "CMDS.DAT"  and  the   
  26546.          uncompiled TEXT version is in a file called "CMDS.TXT".
  26547.  
  26548.          Each  line of text in CMDS.TXT is a SINGLE  database  record.   
  26549.          Osiris does, in a number of places, combine multiple database   
  26550.          records  to form a complete sentence or  display,  especially   
  26551.          when the sentence contains variables.
  26552.  
  26553.          The  text's POSITION in the cmds.txt file is  very  important   
  26554.          and  if you modify the text, or colors, you must  NOT  modify   
  26555.          the texts position in this file. If you do, you'll throw  the   
  26556.          entire display system off.
  26557.  
  26558.          Each record, or line, has a maximum length of 254 characters,   
  26559.          including color, formatting characters, etc.
  26560.  
  26561.          We've  provided  a pure TEXT version, ASCII.TXT, which  is  a   
  26562.          clone of CMDS.TXT minus ANSI colors, easier to read.
  26563.  
  26564.          There   is   no EASY method of  identifying   exactly   where   
  26565.          each  record is used. Actually there is, but it requires  the  
  26566.          Osiris   source  code but you don't have that and  we're  not   
  26567.          going  to  give  it  to you. So the best way to tell is  just   
  26568.          to  look,  while  in local mode, at the text being  displayed  
  26569.          and try  to  match  it  with text in the control file.  
  26570.  
  26571.          In  a lot of cases, it will be fairly obvious where the  text   
  26572.          is displayed and what it is used for. In other cases, you may   
  26573.          have  to  use the old trial and error method. I  am  assuming   
  26574.          that  you aren't going to be tampering with this  file  until   
  26575.          you are fairly familiar with the Software.
  26576.  
  26577.          And  if  all  else fails, you can always  ask  the  sysop  of   
  26578.          Vetlink 3, he can tell you exactly what lines are used for  a   
  26579.          particular display.
  26580.  
  26581.  
  26582.  
  26583.  
  26584.  
  26585.  
  26586.          Osiris SE         Technical Reference Manual        Page 462
  26587.  
  26588.          CMDS.TXT  not  only  contains the text and  colors,  it  also   
  26589.          contains  a  LOT of the formatting commands.  Either  in  the   
  26590.          form  of \r, \n, _, or spaces.
  26591.  
  26592.          \r generates a carriage return. This does NOT generate a  NEW   
  26593.          line,  it simply puts you on COLUMN 0, same line.  
  26594.  
  26595.          \n generates a NEW LINE, i.e., it moves you down a line.
  26596.  
  26597.          _ is a BLANK SPACE indicator, most text editors do not  allow   
  26598.          you to end a line with a space, and they shouldn't. When  you   
  26599.          are  required to RESERVE a blank and the blank is at the  end   
  26600.          of a line, use the underscore character.
  26601.  
  26602.          If you want to translate the text to another language,  first   
  26603.          do  a DIRECT, if possible, translation line for line  without   
  26604.          regards to the combined use of multiple records.
  26605.  
  26606.          Do this a section at a time. By section, I mean a SET  number   
  26607.          of  lines . . . 20 is a good number. Log-on locally  and  try   
  26608.          out the areas that use the text. You many need to adjust  the   
  26609.          text  alignment  if the language conversion  makes  the  text   
  26610.          longer or shorter. 
  26611.           
  26612.                                     Cmdmake.exe
  26613.  
  26614.               CMDMAKE.EXE is the language database compiler. It  takes   
  26615.               the  raw  text  file,  CMDS.TXT,  and  compiles  it   to   
  26616.               CMDS.DAT.
  26617.  
  26618.  
  26619.                                      Ascii.txt
  26620.  
  26621.               This  contains the text and formatting characters  minus   
  26622.               the ANSI color commands.
  26623.  
  26624.                                       Cmds.key
  26625.  
  26626.               CMDS.KEY  contains  the  command  keys  associated  with   
  26627.               certain  hardcoded  items,  like the  y/N  prompt,  more   
  26628.               prompt, more prompt in the a file listing, etc. 
  26629.  
  26630.               If you change the language, then you would also want  to   
  26631.               change  the command keys to go along with the  language.   
  26632.               In  other  words, YES in German is not spelled  YES  and   
  26633.               using Y to indicate Yes in German would not make sense.
  26634.  
  26635.                                        Lankey.exe
  26636.  
  26637.                    Lankey.exe can be used to redefine the keys used in   
  26638.                    the CMDS.KEY file. Just run the program and it will   
  26639.                    tell you what to do.
  26640.  
  26641.          Osiris SE         Technical Reference Manual        Page 463
  26642.                
  26643.                              Designing Your Own Bbs
  26644.  
  26645.          Even though this section deals with SPL/I, I decided to place   
  26646.          it near the end of the documentation because it deals with an   
  26647.          advanced concept and you do not have any business  attempting   
  26648.          to  use  it  until  you have quite  a  bit  of  Osiris  SPL/I   
  26649.          experience.
  26650.  
  26651.          SPL/I  is very powerful, so powerful you can create your  own   
  26652.          unique  BBS and I'm going to do one for you, to give  you  an   
  26653.          idea how the logic should flow. The BBS we'll create will  be   
  26654.          a COPY of what you might normally find on an Osiris BBS.  I'm   
  26655.          not  going  to  do a lot of  fancy  subsystems,  windows,  or   
  26656.          multiple  BBS'  in  one. I just want to show  you  the  logic   
  26657.          behind  the  setup so you can let your  own  imagination  run  
  26658.          wild.
  26659.  
  26660.          I'm  not  going  to explain how each command  works  or  that   
  26661.          commands  syntax.  You  should know that by now  and  if  you   
  26662.          don't, you aren't ready for this section.
  26663.           
  26664.                                   Autoexec.prg
  26665.  
  26666.               Osiris   has  a  special  command  file,   autoexec.prg,   
  26667.               specifically  for this purpose. If this file exists,  in   
  26668.               your  OSIRIS= directory, it will be executed as soon  as   
  26669.               the caller enters his or her password.
  26670.  
  26671.                                   Getting Started
  26672.  
  26673.               If you'll log-on to your own system, you'll notice  that   
  26674.               everyone  gets the same basic displays  before  reaching   
  26675.               the  main menu; New personal mail check, new  conference   
  26676.               mail check (if active), new bulletin check, and  finally   
  26677.               the new uploads search, if active.
  26678.  
  26679.               Because the new upload search always asks IF you want to   
  26680.               do  one,  I'm going to have to do the same thing.  If  I   
  26681.               ask,  I need a variable to hold the answer so the  first   
  26682.               item is:
  26683.  
  26684.               _define_var(ch,character);
  26685.  
  26686.               To keep the screen nice and neat, I'm going to clear it
  26687.  
  26688.               _cls();
  26689.  
  26690.               The next item is the new private mail search so, 
  26691.  
  26692.               _private_mail_scan();
  26693.  
  26694.  
  26695.  
  26696.          Osiris SE         Technical Reference Manual        Page 464
  26697.  
  26698.               The  next  step is the new conference mail  check.  But,   
  26699.               unlike the new private mail search, this one is optional   
  26700.               so  I'm going to have to check to see IF the caller  has   
  26701.               turned  that option on. There is a predefined  variable,   
  26702.               _NCONF  that contains 1 if the caller has selected  this   
  26703.               option and 0 if he did not.
  26704.  
  26705.               There are a number of ways to check it, but the simplest   
  26706.               is the _IF statement.
  26707.  
  26708.               _if(_NCONF = 1); 
  26709.                 _run_newmail_scan(); 
  26710.               _Endif;
  26711.  
  26712.               Another way to check _NCONF
  26713.  
  26714.               _IF(_NCONF); 
  26715.                   _run_newmail_scan(); 
  26716.               _Endif;
  26717.  
  26718.               If  no operator is present, the expression is  evaluated   
  26719.               TRUE or FALSE. Since a non-zero number always  evaluates   
  26720.               TRUE, this will work.
  26721.  
  26722.               Ok, lets stop and put all this together.
  26723.  
  26724.               _define_var(ch,character); 
  26725.               _cls(); 
  26726.               _private_mail_scan(); 
  26727.               _IF(_NCONF); 
  26728.                   _run_newmail_scan(); 
  26729.               _Endif;
  26730.  
  26731.               The new bulletin search is next so
  26732.  
  26733.               _new_bulletin_scan();
  26734.  
  26735.  
  26736.               The  next  step  is "LAST CALLER" to the  system  and  a   
  26737.               number of other STATISTICAL displays.
  26738.  
  26739.               Like everything else in SPL/I, there is no limit to what   
  26740.               you  COULD  do,  but we'll limit it  to  just  the  last   
  26741.               callers  name, city, number of system users, node he  or   
  26742.               she  is on, the connect rate, total calls that node  has   
  26743.               received  TO DATE, and the amount of time left  for  the   
  26744.               day.
  26745.  
  26746.               I  said  I  wasn't  going to  do  anything  fancy,  like   
  26747.               windowing, but I think I will . . . just to help gear up   
  26748.               your imagination.
  26749.  
  26750.  
  26751.          Osiris SE         Technical Reference Manual        Page 465
  26752.  
  26753.               I'll   use  five  different  windows  to   display   the   
  26754.               information and I'll open them in staggered order, i.e.,   
  26755.               not  one right after the other. I'll jump around on  the   
  26756.               screen to give it an animated look.
  26757.  
  26758.               Because of the ansi display is going to be a tad on  the   
  26759.               fancy  side,  we'll make this section  a  procedure  and   
  26760.               call it. To keep things as simple as possible, we'll use   
  26761.               two procedures, ANSI_HELLO and PLAIN_HELLO.
  26762.  
  26763.               We'll  use an _ELSEIF statement to test  the  predefined   
  26764.               variable _ANSI to determine which procedure to call.
  26765.  
  26766.               _elseif(_ANSI); 
  26767.                  _CALL(ANSI_HELLO); 
  26768.               _else; 
  26769.                  _CALL(PLAIN_HELLO); 
  26770.               _eend;
  26771.  
  26772.  
  26773.  
  26774.               _procedure(ANSI_HELLO);
  26775.  
  26776.  
  26777.               Keep in mind that when you use windows, it is up to  you   
  26778.               to  keep  track of the cursor. You'll have to  save  the   
  26779.               original location, move it to the new location (when you   
  26780.               want to print something), and restore it after you close   
  26781.               the windows.
  26782.  
  26783.               I've always like the variable names ROW and COL to store   
  26784.               cursor information so
  26785.  
  26786.               _define_var(row,integer); 
  26787.               _define_var(col,integer);
  26788.  
  26789.               Since we're going to pause at the end of the display and   
  26790.               wait for the caller to press a key,
  26791.  
  26792.               _define_var(ch,character);
  26793.  
  26794.  
  26795.               The next step is to save the current cursor position and   
  26796.               open  the  window. 
  26797.  
  26798.               _curget(row,col); 
  26799.               _openwindow(1,7,24,7,66,2,15);
  26800.  
  26801.  
  26802.  
  26803.  
  26804.  
  26805.  
  26806.          Osiris SE         Technical Reference Manual        Page 466
  26807.  
  26808.               Now  we'll position the cursor in the window  and  print   
  26809.               where the caller was from.
  26810.  
  26811.               _locate(8,38); 
  26812.               _color(15); 
  26813.               _putc(' '); 
  26814.               _color(2); 
  26815.               _sprint("    From     "); 
  26816.               _color(15); 
  26817.               _putc(' '); 
  26818.               _color(14); 
  26819.               _locate(7,25); 
  26820.               _printf("%s",_LCCITY);
  26821.  
  26822.  
  26823.               Notice  I  used the SPL/I color command instead  of  the   
  26824.               embedded ANSI color commands.
  26825.  
  26826.               Actual,  the  embedded ANSI commands would be  a  little   
  26827.               faster,  but for some reason I just felt like using  the   
  26828.               color command. 
  26829.  
  26830.               Our next window will display the callers name.
  26831.  
  26832.               _openwindow(2,4,18,4,60,2,15); 
  26833.               _locate(3,32); 
  26834.               _color(15); 
  26835.               _putc(' '); 
  26836.               _color(2); 
  26837.               _sprint(" Last Caller "); 
  26838.               _color(15); 
  26839.               _putc(' '); 
  26840.               _color(14); 
  26841.               _locate(4,19); 
  26842.               _printf("%s",_LCNAME);
  26843.  
  26844.               If  you'll look at the last two window examples,  you'll   
  26845.               notice  both  have some rather out of place  locate  and   
  26846.               putc calls. 
  26847.  
  26848.               I  decided to get a little fancy and add window  headers   
  26849.               to  the windows by overwriting the border  with  headers   
  26850.               explaining what the windows represented. Its an  example   
  26851.               of  how  you can add versatility to  an  existing  SPL/I   
  26852.               command with a little imagination.
  26853.  
  26854.  
  26855.  
  26856.  
  26857.  
  26858.  
  26859.  
  26860.  
  26861.          Osiris SE         Technical Reference Manual        Page 467
  26862.  
  26863.               _openwindow(3,11,41,13,75,2,13); 
  26864.               _color(14); 
  26865.               _locate(11,56); 
  26866.               _sprint(": "); 
  26867.               _color(3); 
  26868.               _sprint("No. of Users");
  26869.  
  26870.               _color(14); 
  26871.               _locate(12,56); 
  26872.               _sprint(": "); 
  26873.               _color(3); 
  26874.               _sprint("Total Calls"); 
  26875.               _locate(13,61); 
  26876.               _sprint("To Date"); 
  26877.               _color(15);
  26878.  
  26879.               _locate(11,48); 
  26880.               _printf("%7l",_TUSERS); 
  26881.               _locate(12,48); 
  26882.               _printf("%7l",_TOTALCALLS);
  26883.  
  26884.               _openwindow(4,11,2,13,36,2,13); 
  26885.               _locate(11,3); 
  26886.               _color(3); 
  26887.               _sprint("Current Node      "); 
  26888.               _color(14); 
  26889.               _putc(':'); 
  26890.               _color(15); 
  26891.               _printf(" %-7d",_NODE); 
  26892.               _locate(12,3); 
  26893.               _color(3); 
  26894.               _sprint("Connect Baud Rate "); 
  26895.               _color(14); 
  26896.               _putc(':'); 
  26897.               _color(15); 
  26898.               _printf(" %d",_BRATE); 
  26899.               _color(3); 
  26900.               _locate(13,3); 
  26901.               _sprint("Time Left Today   "); 
  26902.               _color(14); 
  26903.               _putc(':'); 
  26904.               _color(15); 
  26905.               _printf(" %d",_TIMELEFT);
  26906.  
  26907.  
  26908.  
  26909.                Both  of  these windows reverse JUSTIFY  the  text.  In   
  26910.               other  words, instead of printing from the first  column   
  26911.               in  the window, they reverse the way the text  is  print   
  26912.               and  start  with the inner column and print out  to  the   
  26913.               first column.
  26914.  
  26915.  
  26916.          Osiris SE         Technical Reference Manual        Page 468
  26917.                
  26918.               You'll  just have to type in this section and run it  to   
  26919.               really appreciate it.
  26920.  
  26921.               The last window is the press any key to continue  window   
  26922.               and it goes something like this
  26923.  
  26924.               _openwindow(5,17,24,17,56,0,12); 
  26925.               _locate(17,25); 
  26926.               _sprint("Press  any  key to continue .  .  ."); 
  26927.               _getc(ch,0);
  26928.  
  26929.               The  of the last thing we do in the procedure is,  close   
  26930.               the windows.
  26931.  
  26932.               Normally  you'd  want to close the  windows  in  reverse   
  26933.               order, i.e., last opened is first closed. But since none   
  26934.               of  our  windows  overlap, you get some  free,  no  work   
  26935.               involved,  special  effects by  staggering  the  closing   
  26936.               order.
  26937.  
  26938.               _closewindow(3); 
  26939.               _closewindow(2); 
  26940.               _closewindow(1); 
  26941.               _closewindow(4); 
  26942.               _closewindow(5);
  26943.  
  26944.               And  finally,  put  the  cursor  back  in  its  original   
  26945.               position and end the procedure.
  26946.  
  26947.               _locate(row,col); 
  26948.               _pend;
  26949.  
  26950.               Lets put the entire procedure together so you can  block   
  26951.               copy it to disk and try it out.
  26952.  
  26953.               _procedure(ANSI_HELLO);
  26954.  
  26955.               _define_var(row,integer); 
  26956.               _define_var(col,integer); 
  26957.               _define_var(ch,character);
  26958.  
  26959.               _curget(row,col); 
  26960.               _openwindow(1,7,24,7,66,2,15); 
  26961.               _locate(8,38); 
  26962.               _color(15); 
  26963.               _putc(' '); 
  26964.               _color(2); 
  26965.               _sprint("    From     "); 
  26966.               _color(15);
  26967.  
  26968.  
  26969.  
  26970.  
  26971.          Osiris SE         Technical Reference Manual        Page 469
  26972.  
  26973.               _putc(' '); 
  26974.               _color(14); 
  26975.               _locate(7,25); 
  26976.               _printf("%s",_LCCITY); 
  26977.               _openwindow(2,4,18,4,60,2,15); 
  26978.               _locate(3,32); 
  26979.               _color(15); 
  26980.               _putc(' '); 
  26981.               _color(2); 
  26982.               _sprint(" Last Caller "); 
  26983.               _color(15); 
  26984.               _putc(' '); 
  26985.               _color(14); 
  26986.               _locate(4,19); 
  26987.               _printf("%s",_LCNAME); 
  26988.               _openwindow(3,11,41,13,75,2,13); 
  26989.               _color(14); 
  26990.               _locate(11,56); 
  26991.               _sprint(": "); 
  26992.               _color(3); 
  26993.               _sprint("No. of Users");
  26994.  
  26995.               _color(14); 
  26996.               _locate(12,56); 
  26997.               _sprint(": "); 
  26998.               _color(3); 
  26999.               _sprint("Total Calls"); 
  27000.               _locate(13,61); 
  27001.               _sprint("To Date"); 
  27002.               _color(15); 
  27003.               _locate(11,48); 
  27004.               _printf("%7l",_TUSERS); 
  27005.               _locate(12,48); 
  27006.               _printf("%7l",_TOTALCALLS);
  27007.  
  27008.               _openwindow(4,11,2,13,36,2,13); 
  27009.               _locate(11,3); 
  27010.               _color(3); 
  27011.               _sprint("Current Node      "); 
  27012.               _color(14); 
  27013.               _putc(':'); 
  27014.               _color(15); 
  27015.               _printf(" %-7d",_NODE); 
  27016.               _locate(12,3); 
  27017.               _color(3); 
  27018.               _sprint("Connect Baud Rate "); 
  27019.               _color(14); 
  27020.               _putc(':'); 
  27021.               _color(15); 
  27022.               _printf(" %d",_BRATE); 
  27023.               _color(3); 
  27024.               _locate(13,3);
  27025.  
  27026.          Osiris SE         Technical Reference Manual        Page 470
  27027.  
  27028.               _sprint("Time Left Today   "); 
  27029.               _color(14); 
  27030.               _putc(':'); 
  27031.               _color(15); 
  27032.               _printf(" %d",_TIMELEFT);
  27033.  
  27034.               _openwindow(5,17,24,17,56,0,12); 
  27035.               _locate(17,25); 
  27036.               _sprint("Press  any  key to continue .  .  ."); 
  27037.               _getc(ch,0);
  27038.  
  27039.               _closewindow(3); 
  27040.               _closewindow(2); 
  27041.               _closewindow(1); 
  27042.               _closewindow(4); 
  27043.               _closewindow(5);
  27044.  
  27045.               _locate(row,col); 
  27046.               _pend;
  27047.  
  27048.               The procedure PLAIN_ANSI is your run of the mill,  plain   
  27049.               jane  procedure and doesn't really have anything special  
  27050.               that  would   need any type of detailed  explanation  so  
  27051.               I'll just list it.
  27052.  
  27053.          _procedure(PLAIN_ANSI);
  27054.  
  27055.          _define_var(ch,character); 
  27056.          _cls(); 
  27057.          _printf("Last Caller %s From %s\n",_LCNAME, LCCITY); 
  27058.          _printf("You are caller #%l on Node %l\n\n"_TOTALCALLS,_TUSERS); 
  27059.          _printf("Connect Rate    : %d\n",_BRATE); 
  27060.          _printf("Time Left Today : %d Min(s)\n\n",_TIMELEFT);
  27061.  
  27062.          _printf("Press any key to continu . . ."); 
  27063.          _getc(ch,1); 
  27064.          _cls();
  27065.  
  27066.          _pend;
  27067.  
  27068.  
  27069.               You   COULD   get a little fancier than  that  but  this   
  27070.               type  of  procedure just doesn't excite me.
  27071.  
  27072.  
  27073.  
  27074.  
  27075.  
  27076.  
  27077.  
  27078.  
  27079.  
  27080.  
  27081.          Osiris SE         Technical Reference Manual        Page 471
  27082.  
  27083.  
  27084.               Now, the NEW UPLOADS search is also a user configuration   
  27085.               option  so  I'm going to have to test to see  if  it  is   
  27086.               turned  on.  There  is  a  predefined  variable   called   
  27087.               _NEWUPLOADS that contains 1 if the caller has the option   
  27088.               turned on and 0 if it is off.
  27089.  
  27090.               _IF(_NEWUPLOADS);
  27091.  
  27092.               _Endif;
  27093.  
  27094.               The  body of the _IF statement will need to ASK  if  the   
  27095.               caller  wants to do the search. Now, we have to keep  in   
  27096.               mind that not everyone supports or wants ANSI colors  so   
  27097.               we can't just use one prompt for everyone.
  27098.  
  27099.               Like the newuploads search option, there is a predefined   
  27100.               variable, _ANSI, that we can check.
  27101.  
  27102.               Since we're going to print one of two prompts, depending   
  27103.               on the value of _ANSI, the ELSEIF statement would be the   
  27104.               logical method.
  27105.  
  27106.               _ELSEIF(_ANSI);
  27107.  
  27108.               _ELSE;
  27109.  
  27110.               _EEND:
  27111.  
  27112.               We now have
  27113.  
  27114.               _IF(_NEWUPLOADS);
  27115.  
  27116.                  _ELSEIF(_ANSI); 
  27117.                  
  27118.                  _ELSE; 
  27119.                   
  27120.                  _EEND;
  27121.  
  27122.               _Endif;
  27123.  
  27124.               Since  ANSI  characters  are hard to  get  into  a  word   
  27125.               processor,  I'm  not going to display them so  use  your   
  27126.               imagination.
  27127.  
  27128.  
  27129.  
  27130.  
  27131.  
  27132.  
  27133.  
  27134.  
  27135.  
  27136.          Osiris SE         Technical Reference Manual        Page 472
  27137.  
  27138.  
  27139.               There  are several ways of printing the text, but  we'll   
  27140.               use  the printf statement. It isn't the fastest  method,   
  27141.               but the amount of text is so small, it wouldn't make any   
  27142.               noticeable  difference no matter what method we used.  
  27143.  
  27144.               My personal preference is the MEMO database. I could use   
  27145.               only  one  prompt,  the  MEMO  database  record  display   
  27146.               function  will  filter the none-ansi characters  if  the   
  27147.               caller  does  not  support  ansi.  That  would  make  my   
  27148.               autoexec.prg much smaller and easier to read.
  27149.  
  27150.               _if(_NEWUPLOADS); 
  27151.                 _elseif(_ANSI); 
  27152.                    _printf("SEARCH FOR NEW UPLOADS [y/N] ? "); 
  27153.                 _else; 
  27154.                    _printf("Search For NEW Uploads [y/N] ? "); 
  27155.                 _eend;
  27156.  
  27157.               _endif; 
  27158.  
  27159.               We're only interested in a single character answer, Y or   
  27160.               N so the _getc command would be the method we'll use  to   
  27161.               get  the input. Again, it isn't the only way but  it  is   
  27162.               simple and gets the job done. 
  27163.  
  27164.               Since  we want to keep our testing to a  minimum,  we'll   
  27165.               force  what the caller types in to upper case using  the   
  27166.               command 
  27167.  
  27168.                 _getc(ch,1); 
  27169.                
  27170.               If  you get a lot of callers that have line that  aren't   
  27171.               exactly the cleanest in the world, you might want to use   
  27172.               _get_ctrl_input(ch,"YN");  because  of  its  ability  to   
  27173.               filter out the garbage characters.
  27174.  
  27175.               If you do use _get_ctrl_input, you'll need to change the   
  27176.               "y/N" to "Y/N", entering nothing would not be allowed.
  27177.  
  27178.               You could also use get_masked_input or even _gets()  and   
  27179.               use   the  copy_ch  function  to  extract   the   single   
  27180.               character.
  27181.  
  27182.               Despite the answer, Y or N, we want to clear the  screen   
  27183.               to keep it nice and neat looking.
  27184.  
  27185.                 _cls();
  27186.  
  27187.  
  27188.  
  27189.  
  27190.  
  27191.          Osiris SE         Technical Reference Manual        Page 473
  27192.  
  27193.               You  might  think  that because  we  have  two  possible   
  27194.               answer,  that  we  need to test two  expression  or  use   
  27195.               ELSEIF.  Normally  that  might  be  the  case  and   you   
  27196.               certainly could do it that way if you wanted to. 
  27197.                
  27198.               But since we indicated that the default was 'N', we only   
  27199.               need  to test to see if the other answer was given,  the   
  27200.               'Y'.
  27201.  
  27202.               If it was, we need to run the new uploads search.
  27203.  
  27204.  
  27205.                 _if(ch = 'Y'); 
  27206.                    _run_newuploads_scan(); 
  27207.                    _call(press_return); 
  27208.                 _endif;
  27209.  
  27210.  
  27211.               Since  the  new  uploads  scan  does  NOT  pause   after   
  27212.               displaying  its  last message, we have to  add  a  press   
  27213.               return to continue prompt.
  27214.  
  27215.               Since  this  would be the kind of prompt we may  use  in   
  27216.               other  places,  I've placed it in a procedure  and  I'll   
  27217.               call it when I need it. I'll outline the procedure later   
  27218.               on, but for now just take my word for it. 
  27219.  
  27220.               That completes the log-in process down to the main menu.  
  27221.  
  27222.               The next step might well be displaying the main menu and   
  27223.               looping  until the caller hangs up, but I want to  leave   
  27224.               myself  some "EXPANSION" room so I'm going to place  the   
  27225.               main  menu in its own procedure and just call  it.  This   
  27226.               also  gives my SPL/I command file a cleaner  look.  I'll   
  27227.               call   the   main  menu  procedure   "main_menu".   That   
  27228.               indicates, by looking, what the procedure does.
  27229.  
  27230.  
  27231.               _call(main_menu); 
  27232.               _mend;
  27233.  
  27234.  
  27235.  
  27236.  
  27237.  
  27238.  
  27239.  
  27240.  
  27241.  
  27242.  
  27243.  
  27244.  
  27245.  
  27246.          Osiris SE         Technical Reference Manual        Page 474
  27247.  
  27248.               Before   we  get  into  the  main  procedure  lets   put   
  27249.               everything together so you can review what we've done so   
  27250.               far.
  27251.  
  27252.               _define_var(ch,character);
  27253.  
  27254.               _cls(); 
  27255.               _private_mail_scan(); 
  27256.               _if(_NCONF); 
  27257.                 _run_newmail_scan(); 
  27258.               _Endif; 
  27259.               _new_bulletin_scan(); 
  27260.               _elseif(_ANSI); 
  27261.                  _CALL(ANSI_HELLO); 
  27262.               _else; 
  27263.                  _CALL(PLAIN_HELLO); 
  27264.               _eend;
  27265.  
  27266.               _if(_NEWUPLOADS); 
  27267.                 _elseif(_ANSI); 
  27268.                    _printf("Search For NEW Uploads [y/N] ? "); 
  27269.                 _else; 
  27270.                    _printf("Search For NEW Uploads [y/N] ? "); 
  27271.                 _eend; 
  27272.                 _getc(ch,1); 
  27273.                 _cls(); 
  27274.                 _if(ch = 'Y'); 
  27275.                    _run_newuploads_scan(); 
  27276.                    _call(press_return); 
  27277.                 _endif; 
  27278.               _endif;
  27279.  
  27280.               _call(main_menu);
  27281.  
  27282.               _mend;
  27283.  
  27284.  
  27285.  
  27286.  
  27287.  
  27288.  
  27289.  
  27290.  
  27291.  
  27292.  
  27293.  
  27294.  
  27295.  
  27296.  
  27297.  
  27298.  
  27299.  
  27300.  
  27301.          Osiris SE         Technical Reference Manual        Page 475
  27302.  
  27303.                                      Main_menu
  27304.  
  27305.               The  first thing we have to do is declare the  procedure   
  27306.               with  _procedure(main_menu);
  27307.  
  27308.               We're going to want to HOLD the caller in the MAIN  menu   
  27309.               loop  from now until he hangs up so we'll need  a  loop.   
  27310.               The  _WHILE  is one method and it is easy to  setup  and   
  27311.               control. 
  27312.  
  27313.               We'll  also  need  to  setup  some  variables  for   the   
  27314.               main_menu procedure.
  27315.  
  27316.               I'll  declare  them now and explain them as I use them.
  27317.  
  27318.                _define_var(not_done,integer); 
  27319.                _define_var(ch,character); 
  27320.                _define_var(empty_queue,integer);
  27321.  
  27322.               I'll use the not_done variable to drive the while  loop.   
  27323.               Now,  there  are two ways I could do  this,  by  setting   
  27324.               not_done  to  1 and looping as long as it is one  or  by   
  27325.               setting  it to zero and looping as long as it  is  zero.   
  27326.               Doesn't  matter  either way because I  don't  intend  to   
  27327.               every change it.
  27328.  
  27329.               To keep consistent with other examples in this document,   
  27330.               lets assign it the value of 1.
  27331.  
  27332.                _assign(not_done,1);
  27333.  
  27334.               We now have:
  27335.  
  27336.               _procedure(main_menu);
  27337.  
  27338.                _define_var(not_done,integer); 
  27339.                _define_var(ch,character); 
  27340.                _define_var(empty_queue,integer);
  27341.  
  27342.               _assign(not_done,1); 
  27343.               _while(not_done);
  27344.  
  27345.               _wend; 
  27346.               _pend;
  27347.  
  27348.               The  reason we want to HOLD the caller in this  loop  is   
  27349.               because the main menu is the focal point of the  system.   
  27350.               Everything  else  is  accessed FROM the  main  menu  and   
  27351.               everything returns TO the main menu.
  27352.  
  27353.  
  27354.  
  27355.  
  27356.          Osiris SE         Technical Reference Manual        Page 476
  27357.  
  27358.  
  27359.               You  might  be wondering, "If I'm in the file  area  and   
  27360.               select  the  Conference  system option,  how  do  I  get   
  27361.               there if I have to return to the main menu?".
  27362.  
  27363.               That  is the sixty four dollar question and I'll  answer   
  27364.               it in short order, but first lets setup our menu display   
  27365.               and input prompts.
  27366.  
  27367.               The  first thing we want to do inside the while loop  is   
  27368.               to clear the screen, _cls();
  27369.  
  27370.               Because  Osiris  allows command stacking,  you  wouldn't   
  27371.               just  jump in and display the menu and input prompt.  We   
  27372.               first  have  to see if there are  in  PENDING  commands.   
  27373.               Again,  this is NOT a requirement but it would  waste  a   
  27374.               lot  of  time displaying the menu when  the  caller  has   
  27375.               already made his selection.
  27376.  
  27377.               _command_queue_status(empty_queue);
  27378.  
  27379.               Empty_queue  is  an integer variable  and  the  function   
  27380.               "_command_queue_status"  will  set empty_queue to  1  if   
  27381.               there is NO commands pending and 0 if there are.
  27382.  
  27383.               With  the  status of the command queue tucked  into  the   
  27384.               empty_queue   variable,  we  can  test  using  the   _IF   
  27385.               statement. If empty_queue equals 1, go ahead and display   
  27386.               the menu and the input prompt.
  27387.  
  27388.               _if(empty_queue);
  27389.  
  27390.               _endif;
  27391.  
  27392.               When it comes to displaying some sort of menu, there are   
  27393.               about as many ways of doing it as there are ways to draw   
  27394.               a menu.
  27395.  
  27396.               If my personal preference is to use a memo database,  it   
  27397.               saves diskspace and it is fast, but that is a little  to   
  27398.               advanced for most folks.
  27399.  
  27400.               The   EASIEST  method is the MMU system. That  lets  you   
  27401.               use   your    old   main.mmu/asc/ans    files    without    
  27402.               making  modifications.
  27403.  
  27404.               You  have  two  ways of  doing  this,  display_text  and   
  27405.               display_menu.   Both  are  equal  in  speed   but,   the   
  27406.               display_menu  lets those with HOTKEYS break out  of  the   
  27407.               display by pressing a valid key.
  27408.  
  27409.  
  27410.  
  27411.          Osiris SE         Technical Reference Manual        Page 477
  27412.  
  27413.               Lets  assume the following are valid keys for this  main   
  27414.               menu
  27415.  
  27416.               I = Internode chat 
  27417.               F = File System 
  27418.               P = Public Messages 
  27419.               A = Ask the Sysop a Question 
  27420.               S = Statistics System 
  27421.               R = Read Bulletins 
  27422.               W = Who's On-Line 
  27423.               C = Change Menu 
  27424.               V = Version 
  27425.               M = Message Center 
  27426.               L = User List 
  27427.               G = Good Bye
  27428.  
  27429.               If those are the valid command keys and MAIN.ASC/ANS/MMU   
  27430.               is the menu, _display_menu("IFPASRWCVDMLG","main");
  27431.  
  27432.               The next step is the input prompt. We want to  duplicate   
  27433.               the   one  Osiris uses with the time  on-line  and   the   
  27434.               time   left. And, since we have to consider  those  that   
  27435.               support   ansi   and  those  that  don't,  we  need  two   
  27436.               prompts  inside  an ELSEIF statement. 
  27437.  
  27438.               We now have
  27439.  
  27440.               _procedure(main_menu);
  27441.  
  27442.                _define_var(not_done,integer); 
  27443.                _define_var(ch,character); 
  27444.                _define_var(empty_queue,integer);
  27445.  
  27446.               _assign(not_done,1); 
  27447.               _while(not_done); 
  27448.                _cls(); 
  27449.                _command_queue_status(empty_queue); 
  27450.                _if(empty_queue); 
  27451.                   _display_menu("IFPASRWCVDMLG","main"); 
  27452.                 _elseif(_ANSI); 
  27453. _printf("Time on: %d Time remaining %d Command ? ",_CALLTIME,_TIMELEFT); 
  27454.                 _else; 
  27455. _printf("Time on: %d Time remaining %d Command ? ",_CALLTIME,_TIMELEFT); 
  27456.                 _eend; 
  27457.                _endif;
  27458.  
  27459.               _wend; 
  27460.               _pend;
  27461.  
  27462.  
  27463.  
  27464.  
  27465.  
  27466.          Osiris SE         Technical Reference Manual        Page 478
  27467.  
  27468.               Since we only need a single character answer, we  REALLY   
  27469.               only  need  an  input  command  that  retrieves   single   
  27470.               character responses. To further narrow it down, we  want   
  27471.               the  one that is the closest to the way Osiris  normally   
  27472.               gets the main menu prompt so we'll use 
  27473.  
  27474.              _get_ctrled_input(ch,"WIFPASRCVYDMLGV/");
  27475.  
  27476.               Notice  that I put the _get_ctrled_input OUTSIDE of  the  
  27477.  
  27478.               _if(empty_queue) 
  27479.               _endif
  27480.  
  27481.               Now  we have to test "ch" to see what, if anything,  the   
  27482.               caller entered.
  27483.  
  27484.               We  can do that any number of ways, but the method  that   
  27485.               is less likely to confuse you is the _switch  statement.   
  27486.               It also happens to be the fastest method.
  27487.  
  27488.               Rather   than   list  each one separately,   I'll   list   
  27489.               the  entire switch statement and then touch on the  ones   
  27490.               that  I feel need explaining.
  27491.  
  27492.  
  27493.  
  27494.  
  27495.  
  27496.  
  27497.  
  27498.  
  27499.  
  27500.  
  27501.  
  27502.  
  27503.  
  27504.  
  27505.  
  27506.  
  27507.  
  27508.  
  27509.  
  27510.  
  27511.  
  27512.  
  27513.  
  27514.  
  27515.  
  27516.  
  27517.  
  27518.  
  27519.  
  27520.  
  27521.          Osiris SE         Technical Reference Manual        Page 479
  27522.  
  27523.               _switch(ch);
  27524.  
  27525.                 _case('/');
  27526.  
  27527.                             _putc('/'); 
  27528.                             _call(process_slash); 
  27529.                             _break;
  27530.  
  27531.                 _case('G');
  27532.  
  27533.                             _goto_log_off(); 
  27534.                             _break;
  27535.  
  27536.                 _case('I');
  27537.  
  27538.                              _cls(); 
  27539.                              _internode_chat(); 
  27540.                              _break;
  27541.  
  27542.                 _case('F'); 
  27543.                            _call(file_area); 
  27544.                            _break;
  27545.  
  27546.                 _case('P'); 
  27547.                            _call(msg_area); 
  27548.                           _break;
  27549.  
  27550.                _case('A');
  27551.  
  27552.                           _post_msg_to_sysop(); 
  27553.                           _break;
  27554.  
  27555.                _case('S');
  27556.  
  27557.                           _Goto_Status_system(); 
  27558.                           _break;
  27559.  
  27560.                _case('R');
  27561.  
  27562.                           _read_bulletins(); 
  27563.                           _break;
  27564.  
  27565.                _case('C');
  27566.  
  27567.                           _Goto_Adjust_User_settings(); 
  27568.                           _break;
  27569.  
  27570.                _case('W');
  27571.  
  27572.                           _cls(); 
  27573.                           _show_who_is_online(); 
  27574.                           _break;
  27575.  
  27576.          Osiris SE         Technical Reference Manual        Page 480
  27577.  
  27578.                _case('D'); 
  27579.                           _global_download(); 
  27580.                           _break;
  27581.  
  27582.                _case('M'); 
  27583.                           _goto_msg_center(); 
  27584.                           _break;
  27585.  
  27586.                _case('L');
  27587.  
  27588.                           _cls(); 
  27589.                           _display_callers(); 
  27590.                           _break;
  27591.  
  27592.                _case('V');
  27593.  
  27594.                           _cls(); 
  27595.                           _goto_display_version(); 
  27596.                           _break;
  27597.  
  27598.                 _default; 
  27599.                 
  27600.                          _printf("\n\nThat is NOT a valid command.\n"); 
  27601.                         _printf("Press any key to continue . . ."); 
  27602.                         _getc(ch,0); 
  27603.                        _break;
  27604.  
  27605.                 _send;
  27606.  
  27607.               You've  no  doubt noticed that I did not do  any  access   
  27608.               level  checking.  I  didn't because  there  are  several   
  27609.               methods  of  doing  that type  of  check,  depending  on   
  27610.               personal  preferences.  
  27611.  
  27612.               I  also  did not want to add additional  weight  to  the   
  27613.               documentation by doing repetitive tasks. Rather than add   
  27614.               access  level  checking to each command, I'll  show  you   
  27615.               several methods that can apply to not only this section,   
  27616.               but the public messages (conference areas) and the  file   
  27617.               systems.
  27618.  
  27619.               Access  level  checking  need not  always  be  done.  If   
  27620.               everyone  has  access  to a command,  don't  waste  time   
  27621.               checking.
  27622.  
  27623.               If you do not use command access flags for a  particular   
  27624.               command, most don't then I would recommend using the 
  27625.                
  27626.               _IF(_ACCESS > VALUE);
  27627.  
  27628.               _ENDIF;
  27629.  
  27630.  
  27631.          Osiris SE         Technical Reference Manual        Page 481
  27632.  
  27633.               E.g.,
  27634.  
  27635.               _case('V'); 
  27636.                          _if(_ACCESS > 5); 
  27637.                           _cls(); 
  27638.                           _goto_display_version(); 
  27639.                          _ENDIF; 
  27640.                           _break;
  27641.  
  27642.  
  27643.  
  27644.               If  you  use command access flags,  then  I'd  recommend   
  27645.               using   the  "_main_command_access"  command.  See   the   
  27646.               section  on _main_command_access for syntax.  There  are   
  27647.               also   special  commands  to test  the  conference  area   
  27648.               commands and the file area commands.
  27649.  
  27650.               The only case label that needs explaining is
  27651.  
  27652.               _case('/');
  27653.  
  27654.               This  is  how you would process SLASH commands.  When  a   
  27655.               caller  types /, to indicate a slash command, it  causes   
  27656.               the  input  routine in Osiris to return with  /  as  the   
  27657.               character.  It does not PRINT the slash to  the  screen.   
  27658.               You  don't  need to know why it isn't  printed,  its  an   
  27659.               internal  Osiris  thing but you do need to  display  the   
  27660.               slash  character to let the caller know his command  key   
  27661.               wasn't ignored
  27662.  
  27663.               _putc('/');
  27664.  
  27665.               Because the a slash command can be entered from any  one   
  27666.               of our 3 primary menus, I'll make a special procedure to   
  27667.               process   the  slash  commands,  to   reduce   redundant   
  27668.               programming,  and  call that procedure when  I  need  to   
  27669.               process       a     slash     command.     E.g,      the    
  27670.               _call(process_slash);
  27671.  
  27672.               I'll  hold off explaining the "process_slash"  procedure   
  27673.               until  after  we  finish  with  the  other  two  primary   
  27674.               subsystems.
  27675.  
  27676.  
  27677.               Lets put the entire MAIN_MENU procedure together so  you   
  27678.               can example it
  27679.  
  27680.               _procedure(main_menu);
  27681.  
  27682.                _define_var(not_done,integer); 
  27683.                _define_var(ch,character); 
  27684.                _define_var(empty_queue,integer);
  27685.  
  27686.          Osiris SE         Technical Reference Manual        Page 482
  27687.  
  27688.  
  27689.               _assign(not_done,1); 
  27690.               _while(not_done); 
  27691.                _cls(); 
  27692.                _command_queue_status(empty_queue); 
  27693.                _if(empty_queue); 
  27694.                   _display_menu("IFPASRWCVDMLG","main"); 
  27695.                 _elseif(_ANSI); 
  27696. _printf("Time on: %d Time remaining %d Command ? ",_CALLTIME,_TIMELEFT); 
  27697.                 _else; 
  27698. _printf("Time on: %d Time remaining %d Command ? ",_CALLTIME,_TIMELEFT); 
  27699.                 _eend; 
  27700.                _endif; 
  27701.               _get_ctrled_input(ch,"WIFPASRCVYDMLGV/");
  27702.  
  27703.               _switch(ch);
  27704.  
  27705.                 _case('/');
  27706.  
  27707.                             _putc('/'); 
  27708.                             _call(process_slash); 
  27709.                             _break;
  27710.  
  27711.                 _case('G');
  27712.  
  27713.                             _goto_log_off(); 
  27714.                             _break;
  27715.  
  27716.                 _case('I');
  27717.  
  27718.                              _cls(); 
  27719.                              _internode_chat(); 
  27720.                              _break;
  27721.  
  27722.                 _case('F'); 
  27723.                            _call(file_area); 
  27724.                            _break;
  27725.  
  27726.                 _case('P'); 
  27727.                            _call(msg_area); 
  27728.                           _break;
  27729.  
  27730.                _case('A');
  27731.  
  27732.                           _post_msg_to_sysop(); 
  27733.                           _break;
  27734.  
  27735.                _case('S');
  27736.  
  27737.                           _Goto_Status_system(); 
  27738.                           _break;
  27739.  
  27740.  
  27741.          Osiris SE         Technical Reference Manual        Page 483
  27742.  
  27743.  
  27744.                _case('R');
  27745.  
  27746.                           _read_bulletins(); 
  27747.                           _break;
  27748.  
  27749.                _case('C');
  27750.  
  27751.                           _Goto_Adjust_User_settings(); 
  27752.                           _break;
  27753.  
  27754.                _case('W');
  27755.  
  27756.                           _cls(); 
  27757.                           _show_who_is_online(); 
  27758.                           _break;
  27759.  
  27760.  
  27761.  
  27762.                _case('D'); 
  27763.                           _global_download(); 
  27764.                           _break;
  27765.  
  27766.                _case('M'); 
  27767.                           _goto_msg_center(); 
  27768.                           _break;
  27769.  
  27770.                _case('L');
  27771.  
  27772.                           _cls(); 
  27773.                           _display_callers(); 
  27774.                           _break;
  27775.  
  27776.                _case('V');
  27777.  
  27778.                           _cls(); 
  27779.                           _goto_display_version(); 
  27780.                           _break;
  27781.  
  27782.                 _default; 
  27783.                 
  27784.                          _printf("\n\nThat is NOT a valid command.\n"); 
  27785.                         _printf("Press any key to continue . . ."); 
  27786.                         _getc(ch,0); 
  27787.                        _break;
  27788.  
  27789.                 _send;
  27790.  
  27791.  
  27792.               _wend; 
  27793.               _pend;
  27794.  
  27795.  
  27796.          Osiris SE         Technical Reference Manual        Page 484
  27797.  
  27798.                                    File Subsystem
  27799.  
  27800.               Assuming  the  caller selected 'F'  from  the  main_menu   
  27801.               procedure, indicating a desire to enter the file system.   
  27802.               We   used  a  procedure  call  to  a   procedure   named   
  27803.               "file_area", e.g., 
  27804.  
  27805.                 _case('F'); 
  27806.                            _call(file_area); 
  27807.                            _break;
  27808.  
  27809.               The  file subsystem construction process is  almost,  to   
  27810.               the  letter, identical to the main_menu. Because  it  is   
  27811.               nearly  identical,  except for commands, I'll  list  the   
  27812.               entire procedure then touch on what is different.
  27813.  
  27814.  
  27815.               _procedure(file_area);
  27816.  
  27817.                _define_var(not_done,integer); 
  27818.                _define_var(ch,character); 
  27819.                _define_var(empty_queue,integer);
  27820.  
  27821.                _assign(not_done,1);
  27822.  
  27823.                _while(not_done); 
  27824.                   _cls(); 
  27825.                   _command_queue_status(empty_queue); 
  27826.                   _if(empty_queue); 
  27827.                     _elseif(_ANSI); 
  27828.                       _printf("File Area %d . . . %s\n",_FAREA#,_FAREA_N); 
  27829.               _else; 
  27830.                       _printf("File Area %d . . . %s\n",_FAREA#,_FAREA_N); 
  27831.               _eend; 
  27832.                     _display_menu("YFGKVAELQPTNSCD*M","filarea"); 
  27833.                     _elseif(_ANSI); 
  27834. _printf("Time on: %d Time remaining %d Command ? ",_CALLTIME,_TIMELEFT); 
  27835.               _else; 
  27836. _printf("Time on: %d Time remaining %d Command ? ",_CALLTIME,_TIMELEFT); 
  27837.                     _eend; 
  27838.                   _endif; 
  27839.                   _get_ctrled_input(ch,"YAFGKV/ELQPTNSCD*M");
  27840.  
  27841.               _switch(ch);
  27842.  
  27843.                 _case('Y'); 
  27844.                            _cls(); 
  27845.                            _transfer_stats(); 
  27846.                            _break;
  27847.  
  27848.                 _CASE('A'); 
  27849.                             _change_file_area(); 
  27850.                             _break; 
  27851.          Osiris SE         Technical Reference Manual        Page 485
  27852.  
  27853.                 _case('/');
  27854.  
  27855.                             _putc('/'); 
  27856.                             _call(process_slash); 
  27857.                             _break;
  27858.  
  27859.                 _case('G');
  27860.  
  27861.                             _goto_log_off(); 
  27862.                             _break;
  27863.  
  27864.  
  27865.                _case('M'); 
  27866.                           _clear(not_done); 
  27867.                           _break;
  27868.  
  27869.                _case('*'); 
  27870.                           _goto_msg_center(); 
  27871.                           _break; 
  27872.                _case('D');
  27873.  
  27874.                           _download(); 
  27875.                           _break; 
  27876.                _case('C'); 
  27877.                           _push_into_queue("P"); 
  27878.                           _clear(not_done); 
  27879.                           _break;
  27880.  
  27881.                _case('S');
  27882.  
  27883.                           _search_for_file(); 
  27884.                           _break; 
  27885.                _case('N'); 
  27886.                           _sprint("\n\n"); 
  27887.                           _run_newuploads_scan(); 
  27888.                           _break;
  27889.  
  27890.                _case('T'); 
  27891.                           _sprint("\n\n"); 
  27892.                           _type_text_file(); 
  27893.                           _break;
  27894.  
  27895.                _case('P'); 
  27896.                           _select_protocol(); 
  27897.                           _break;
  27898.  
  27899.                _case('Q'); 
  27900.                           _sprint("\n\n"); 
  27901.                           _quick_file_list(); 
  27902.                           _break;
  27903.  
  27904.  
  27905.  
  27906.          Osiris SE         Technical Reference Manual        Page 486
  27907.  
  27908.                _case('L'); 
  27909.                           _sprint("\n\n"); 
  27910.                           _full_file_list(); 
  27911.                           _break;
  27912.  
  27913.                _case('E'); 
  27914.                           _sprint("\n\n"); 
  27915.                           _extract_file(); 
  27916.                           _break;
  27917.  
  27918.                _case('V'); 
  27919.                           _sprint("\n\n"); 
  27920.                           _view_archive(); 
  27921.                           _break;
  27922.  
  27923.                _case('K'); 
  27924.                             _sprint("\n\n"); 
  27925.                             _Kill_file(); 
  27926.                             _break;
  27927.  
  27928.                _case('F'); 
  27929.                           _cls(); 
  27930.                           _edit_queue(); 
  27931.                           _break;
  27932.  
  27933.                 _default; 
  27934.                          _printf("\n\nThat is NOT a valid command.\n"); 
  27935.                         _printf("Press any key to continue . . ."); 
  27936.                         _getc(ch,0); 
  27937.                        _break;
  27938.  
  27939.                 _send; 
  27940.                _wend; 
  27941.               _pend;
  27942.  
  27943.               The only case label that is really different is
  27944.  
  27945.                _case('C'); 
  27946.                           _push_into_queue("P"); 
  27947.                           _clear(not_done); 
  27948.                           _break;
  27949.  
  27950.               C  takes you directly to the Conference area,  bypassing   
  27951.               the  main menu or at least everyone thinks it  does.  If   
  27952.               the  truth be known, and it is now, it does  not  bypass   
  27953.               the main menu, it simply bypass' the main menu DISPLAY.
  27954.  
  27955.               By stuffing "P" into the Osiris command stacking  queue,   
  27956.               the main menu display screen will be skipped, the  input   
  27957.               command _get_ctrled_input will retrieve the 'P' from the   
  27958.               queue and drop the caller into the conference system. 
  27959.  
  27960.  
  27961.          Osiris SE         Technical Reference Manual        Page 487
  27962.  
  27963.               Why  can't  you  call it directly, after  all  it  is  a   
  27964.               procedure.
  27965.  
  27966.               You  could except for one thing. The  conference  system   
  27967.               lets you jump back to the file area. 
  27968.  
  27969.               E.g.,
  27970.  
  27971.               You jump from the File Area to the Conference area
  27972.  
  27973.               _CALL(MSG_SYSTEM);
  27974.  
  27975.               You jump from the conference area to the file area
  27976.  
  27977.               _CALL(FILE_AREA);
  27978.  
  27979.               You jump back to the conference area
  27980.  
  27981.               _CALL(MSG_SYSTEM);
  27982.  
  27983.                                                                 
  27984.               Nothing  wrong  with that, BUT you have  never  returned   
  27985.               from the FIRST call to the conference area and here  you   
  27986.               are  calling  it again and again and again  ....  you're   
  27987.               also doing the same thing to the file_area procedure.
  27988.  
  27989.               In a round about way, you are using recursion. Recursion   
  27990.               means  having  a  procedure  call  itself.   SPL/I  does   
  27991.               support  recursive calls, but you have a limited  amount   
  27992.               of  stack  space and each recursive call can  chew  into   
  27993.               that.  When you run out, your program crashes. Just  how   
  27994.               many times can you make recursive calls? I really  don't   
  27995.               know, I've never tried to max it out. My guess would  be   
  27996.               enough  times to get almost any job done  that  benefits   
  27997.               from or needs recursion to work. 
  27998.               
  27999.               The  limited stack space is not a SPL/I restriction,  it   
  28000.               is  the  way  PC's handle things.  Main  frames  use  an   
  28001.               expandable stack, when the application needs more  stack   
  28002.               space, the operating system simply allocates more to the   
  28003.               program.
  28004.  
  28005.               PC's  allocate  a  fixed amount of stack  space  to  the   
  28006.               program. Exceed it and the program crashes. 
  28007.  
  28008.  
  28009.  
  28010.  
  28011.  
  28012.          Osiris SE         Technical Reference Manual        Page 488
  28013.  
  28014.               The  other case label that is different
  28015.  
  28016.               _case('M'); 
  28017.                           _clear(not_done); 
  28018.                           _break;
  28019.  
  28020.               M, goto main menu, simply clears the not_done  variable,   
  28021.               sets it to 0, the while expression evaluates false,  the   
  28022.               loop terminates, end of procedure (Pend) is  encountered   
  28023.               and you return to the main_menu procedure.
  28024.  
  28025.  
  28026.               The  last of our three primary menus is  the  conference   
  28027.               system. It is accessed by the main menu command
  28028.  
  28029.                 _case('P'); 
  28030.                            _call(msg_area); 
  28031.                           _break;
  28032.  
  28033.               And  like  the file_area procedure, it is  identical  in   
  28034.               respects  to  how it should be setup. I'll  display  the   
  28035.               entire procedure and point out what is different.
  28036.  
  28037.               _procedure(msg_area);
  28038.  
  28039.                _define_var(not_done,integer); 
  28040.                _define_var(ch,character); 
  28041.                _define_var(empty_queue,integer);
  28042.  
  28043.                _assign(not_done,1);
  28044.  
  28045.                _while(not_done); 
  28046.                   _cls(); 
  28047.                   _command_queue_status(empty_queue); 
  28048.                   _if(empty_queue); 
  28049.                     _display_menu("PEAGSRMFC!","msgarea"); 
  28050.                     _elseif(_ANSI); 
  28051. _printf("Time on: %d Time remaining %d Command ? ",_CALLTIME,_TIMELEFT); 
  28052.                     _else; 
  28053. _printf("Time on: %d Time remaining %d Command ? ",_CALLTIME,_TIMELEFT); 
  28054.                     _eend; 
  28055.                   _endif; 
  28056.                   _get_ctrled_input(ch,"PEAGSRMFC!/");
  28057.  
  28058.               _switch(ch);
  28059.  
  28060.                 _case('/');
  28061.  
  28062.                             _putc('/'); 
  28063.                             _call(process_slash); 
  28064.                             _break;
  28065.  
  28066.  
  28067.          Osiris SE         Technical Reference Manual        Page 489
  28068.  
  28069.                 _case('G');
  28070.  
  28071.                             _goto_log_off(); 
  28072.                             _break;
  28073.  
  28074.                _case('M'); 
  28075.                           _clear(not_done); 
  28076.                           _break;
  28077.  
  28078.                _case('F'); 
  28079.                           _push_into_queue("F"); 
  28080.                           _clear(not_done); 
  28081.                           _break;
  28082.  
  28083.                _case('E'); 
  28084.                           _enter_message(); 
  28085.                           _break;
  28086.  
  28087.                _case('P'); 
  28088.                           _sprint("\n\n"); 
  28089.                           _pack_messages(); 
  28090.                           _break; 
  28091.                _case('R'); 
  28092.                           _cls(); 
  28093.                           _read_messages(); 
  28094.                           _break; 
  28095.                _case('A'); 
  28096.                           _change_msg_areas(); 
  28097.                           _break; 
  28098.                _case('C'); 
  28099.                           _edit_conf_boards(); 
  28100.                           _break; 
  28101.                _case('!'); 
  28102.                           _goto_msg_center(); 
  28103.                           _break;
  28104.  
  28105.                _case('S'); 
  28106.                           _cls(); 
  28107.                           _run_newmail_scan(); 
  28108.                           _break;
  28109.  
  28110.                 _default; 
  28111.                        _printf("\n\nThat is NOT a valid command.\n"); 
  28112.                         _printf("Press any key to continue . . ."); 
  28113.                         _getc(ch,0); 
  28114.                        _break;
  28115.  
  28116.  
  28117.  
  28118.                 _send; 
  28119.                _wend; 
  28120.               _pend;
  28121.  
  28122.          Osiris SE         Technical Reference Manual        Page 490
  28123.  
  28124.               The only thing here is
  28125.  
  28126.                _case('F'); 
  28127.                           _push_into_queue("F"); 
  28128.                           _clear(not_done); 
  28129.                           _break;
  28130.  
  28131.               It works like the 'C' command in the file_area procedure   
  28132.               except it pushes 'F' into the command stacking queue.
  28133.  
  28134.                                     Press_return
  28135.  
  28136.               All  of  our primary procedures  call  the  press_return   
  28137.               procedure to print the text "Press [RETURN] to Continue"   
  28138.               and then pauses until the caller presses return, or  any   
  28139.               other key.
  28140.  
  28141.               The  procedure  is fairly straight  forward  and  really   
  28142.               doesn't need any explanation so I'll just list it.
  28143.  
  28144.               _procedure(press_return); 
  28145.               _define_var(ch,character);
  28146.  
  28147.                    _elseif(_ANSI); 
  28148.                       _printf("\nPress [RETURN] to continue . . ."); 
  28149.                    _else; 
  28150.                       _printf("\nPress [RETURN] to continue . . ."); 
  28151.                    _eend; 
  28152.                    _getc(ch,1); 
  28153.                    _printf("\r                                   \r");  
  28154.               _pend;
  28155.                                    Process_slash
  28156.  
  28157.               The  last procedure we have to setup  is  process_slash.   
  28158.               Let me show it to you and then explain why I did it this   
  28159.               way.
  28160.  
  28161.  
  28162.  
  28163.  
  28164.  
  28165.  
  28166.  
  28167.  
  28168.  
  28169.  
  28170.  
  28171.  
  28172.  
  28173.  
  28174.  
  28175.  
  28176.  
  28177.          Osiris SE         Technical Reference Manual        Page 491
  28178.  
  28179.               _procedure(process_slash); 
  28180.               _define_var(s1,string(81)); 
  28181.               _define_var(rtcode,integer); 
  28182.               _define_var(str,string(9)); 
  28183.               _gets(str,8); 
  28184.               _elseif(str = "off"); 
  28185.                  _drop_carrier(); 
  28186.               _else; 
  28187.                  _elseif(str = "TNT"); 
  28188.                    _cls(); 
  28189.                 _sprintf(s1,"tntbbs -B %d -P %d -N %d",_BRATE,_PORT,_NODE); 
  28190.               _execute(640,s1,rtcode); 
  28191.                  _else; 
  28192.                   _elseif(str = "Osiris"); 
  28193.                      _push_into_queue("SE302?.ARJ"); 
  28194.                      _cls(); 
  28195.                      _global_download(); 
  28196.                   _else; 
  28197.                      _elseif(str = "Isis"); 
  28198.                        _push_into_queue("I600?.ARJ"); 
  28199.                        _cls(); 
  28200.                        _global_download(); 
  28201.                      _else; 
  28202.                         _printf("\n\a"); 
  28203.                      _eend; 
  28204.                   _eend; 
  28205.                  _eend; 
  28206.               _eend; 
  28207.               _pend;
  28208.  
  28209.  
  28210.               The  actual  slash commands, what they  do,  isn't  that   
  28211.               important, but the WAY you process them is.
  28212.  
  28213.               You COULD simply have done
  28214.  
  28215.               _gets(string,8); 
  28216.               _spawn(string);
  28217.  
  28218.               But, that is very deadly.
  28219.  
  28220.               If  the  caller  types in /AUX or /COM1,  or  /PRN,  and   
  28221.               several  other  DOS  DEVICE names,  your  computer  will   
  28222.               lockup when those devices are opened.
  28223.  
  28224.               If you are going to use the spawn method, you will  HAVE   
  28225.               to  check  to  the contents of string  BEFORE  you  call   
  28226.               spawn.  You'll have more "OVERHEAD" and you'll use  more   
  28227.               diskspace.
  28228.  
  28229.  
  28230.  
  28231.  
  28232.          Osiris SE         Technical Reference Manual        Page 492
  28233.  
  28234.                                       Wrap Up
  28235.  
  28236.               That  wraps up our little "roll your own  bbs"  section.   
  28237.               The  program  we  wrote  will  emulate  what  you  would   
  28238.               normally get WITHOUT using the autoexec.prg file. 
  28239.  
  28240.               It wouldn't make much sense to do an autoexec.prg if you   
  28241.               were  just going to EMULATE what is already  there,  but   
  28242.               this  should  give  you some idea as to  what  would  be   
  28243.               involved in setting up your own.
  28244.  
  28245.               Let you imagination run wild and I'm sure you could come   
  28246.               up with a fairly unique system. 
  28247.  
  28248.               It  might be very complex with dozens of subsystems. 
  28249.    
  28250.               You might want to combine all the features into one main   
  28251.               menu.
  28252.  
  28253.               You can make dozens of different STYLE BBS' and let  the   
  28254.               caller pickout which style best suits his or her needs.
  28255.  
  28256.               Your imagination is the only limit.
  28257.  
  28258.                                         Tip
  28259.  
  28260.               Don't  use one command file for both ANSI and  NON-  
  28261.               ANSI callers. It is much simpler to use a command   file   
  28262.               for ANSI and one for NON-ANSI. 
  28263.  
  28264.               Not only is it simpler, but it is a lot faster   because   
  28265.               you   can   do  away  with  all  of   those   _IF(_ANSI)   
  28266.               expressions.
  28267.  
  28268.               I'd use ANSI.PRG and ASCII.PRG as the command files  and   
  28269.               set-up autoexec.prg to do this;
  28270.  
  28271.  
  28272.               _IF(_ANSI); 
  28273.                  _SPAWN("E:\ANSI.PRG"); 
  28274.               _ENDIF;
  28275.  
  28276.               _SPAWN("E:\ASCII.PRG"); 
  28277.               _Mend;
  28278.  
  28279.               Since  you'll never return to the original  AUTOEXEC.PRG   
  28280.               after  you spawn to the correct command file, you  don't   
  28281.               have to use the ELSEIF. 
  28282.  
  28283.  
  28284.  
  28285.  
  28286.  
  28287.          Osiris SE         Technical Reference Manual        Page 493
  28288.  
  28289.  
  28290.                                  Spl/I Source Files
  28291.  
  28292.               The  BBS,  Vetlink III, has a special file  area  called   
  28293.               "SPL/I SOURCE FILES".
  28294.  
  28295.               This  directory  contains varies SPL/I  source  archives   
  28296.               that  you  can  download  and  use,  generally   without   
  28297.               modifications.  
  28298.  
  28299.               The  area contains simple command files to very  complex   
  28300.               information  retrieval  systems  with  hundreds  of  sub   
  28301.               levels  and hundreds of thousands of bytes  in  multiple   
  28302.               cross indexed databases.
  28303.  
  28304.                                      Speed Tip
  28305.  
  28306.               The  speed of a SPL/I command file is influenced by  the   
  28307.               speed  of  your  harddrive. The faster  the  drive,  the   
  28308.               faster the command file will run.
  28309.  
  28310.               I suggest, strongly, that you create an extended  memory   
  28311.               or  expanded memory RAM disk and run your  ANSI.PRG  and   
  28312.               ASCII.PRG from the RAM disk. 
  28313.                
  28314.               If  you  can't set-up a RAM disk, at least  use  a  disk   
  28315.               cache.
  28316.  
  28317.  
  28318.  
  28319.  
  28320.  
  28321.  
  28322.  
  28323.  
  28324.  
  28325.  
  28326.  
  28327.  
  28328.  
  28329.  
  28330.  
  28331.  
  28332.  
  28333.  
  28334.  
  28335.  
  28336.  
  28337.  
  28338.  
  28339.  
  28340.  
  28341.  
  28342.          Osiris SE         Technical Reference Manual        Page 494
  28343.  
  28344.                                 File Structures
  28345.  
  28346.          The   following   file   structures   are   copyrighted    by   
  28347.          International  TeleCommunciations. You are granted a  LIMITED   
  28348.          license  to  use the following structures in  OSIRIS  related   
  28349.          programs ONLY.
  28350.  
  28351.          Using  the following structures, in part or whole,  for  non-  
  28352.          Osiris  related  programs is forbidden  under  United  States   
  28353.          Copyright laws.
  28354.  
  28355.  
  28356.          Struct  _Hdrxxxxx{/*  first  record in  each  HDRx.SYS  file,   
  28357.                                Conference 
  28358.                                Headers only. */ 
  28359.                char unused[36]; 
  28360.                char unused1[36]; 
  28361.                char unused2[40]; 
  28362.                char unused3[20]; 
  28363.                unsigned  highmsg;  /* Highest message number */ 
  28364.                unsigned  active_msgs; /* Number of NON-Deleted Msgs */ 
  28365.                unsigned   lowmsg; /* Low message number */ 
  28366.                unsigned highwater;   /* Can be used by Export programs   
  28367.                                         to log last message exported */ 
  28368.                unsigned max_msgs;  /* Maximum messages allowed in area*/ 
  28369.                unsigned min_msgs;  /* Post Pack Level */ 
  28370.                unsigned empty3; 
  28371.                unsigned unused4; 
  28372.                unsigned unused5; 
  28373.                unsigned unused6; 
  28374.                unsigned unused7; 
  28375.                long unused8; 
  28376.                long unused9; 
  28377.                unsigned long unused10; 
  28378.                unsigned long unused11; 
  28379.          };
  28380.  
  28381.  
  28382.  
  28383.  
  28384.  
  28385.  
  28386.  
  28387.  
  28388.  
  28389.  
  28390.  
  28391.  
  28392.  
  28393.  
  28394.  
  28395.  
  28396.  
  28397.          Osiris SE         Technical Reference Manual        Page 495
  28398.  
  28399.          NOTE:  Actual Message Headers start with the  second  record.   
  28400.          The first record is reserved for infoxxxxx.
  28401.  
  28402.  
  28403.          Struct _Message_header/* (Conference Header, HDRx.SYS ) */ 
  28404.             { 
  28405.                char from[36]; 
  28406.                char to[36]; 
  28407.                char subj[40]; 
  28408.                char date[20]; 
  28409.                int  external1;/* For external Echomail Processors*/  
  28410.                int  external2; /* For External Echomail Processors*/ 
  28411.                int  external3; /* For External Echomail Processors*/ 
  28412.                int  external4; /* For External Echomail Processors*/ 
  28413.                int  external5; /* For External Echomail Processors*/ 
  28414.                unsigned date_received;   /* Packed Date field, When  
  28415.                                             Message Was Received */
  28416.  
  28417.                unsigned time_received;   /* Packed Time Field, When  
  28418.                                             Message Was Received */ 
  28419.                unsigned down_thread;    /* Current msg is a reply to  
  28420.                                            this msg number     */ 
  28421.                unsigned attr;           /* Attribute (behavior)  
  28422.                                            of the message    */ 
  28423.                unsigned up_thread;     /* Next message in the thread*/ 
  28424.                unsigned board;         /* Message Board message is  
  28425.                                           assigned to */ 
  28426.                long offset;             /* offset address in msgtxt.qbs  
  28427.                                            pointing to start 
  28428.                                            of the message text;*/ 
  28429.                long byte;               /* number of bytes in message */ 
  28430.                unsigned crc; /* 16 byte CRC for Msg Header */ 
  28431.                unsigned eid_date; /* Packed date field, when message  
  28432.                                      was entered */ 
  28433.                unsigned eid_time; /* Packed Time field, when message  
  28434.                                      was entered */ 
  28435.                unsigned extern6; /* For external Echomail Processors*/
  28436.  
  28437.             };
  28438.  
  28439.          Conference Message Attributes
  28440.  
  28441. #define HAVE_READ  0x0001  /* Used by Sphinx          * 0000 0000 0000 0001 */ 
  28442. #define MSGREAD    0x0004  /* read by addressee       * 0000 0000 0000 0100 */ 
  28443. #define MSGDEL     0x0020  /* Msg has been deleted    * 0000 0000 0010 0000 */ 
  28444. #define ORIGIN     0x0040  /* New Echo, Needs ORIGIN  * 0000 0000 0100 0000 */ 
  28445. #define MSGECHO    0x0400  /* Unmoved Echomail        * 0000 0100 0000 0000 */ 
  28446. #define DUPCHK     0x8000  /* Duplicate checked       * 1000 0000 0000 0000 */
  28447.  
  28448.  
  28449.  
  28450.  
  28451.  
  28452.          Osiris SE         Technical Reference Manual        Page 496
  28453.  
  28454.          Struct _Keydef 
  28455.           { 
  28456.             unsigned  char key[256]; /* keys the caller is allowed  to   
  28457.                                         press */ 
  28458.           };
  28459.  
  28460.          NOTE:  First Record in ACCESS.SYS is used as a  place  holder   
  28461.          only.  Access  level  1  starts is  actually  2nd  record  in   
  28462.          ACCESS.SYS
  28463.  
  28464.          Struct _Access_sys{ 
  28465.                  int timelimit_per_call[4]; 
  28466.                  int timelimit_per_day[4]; 
  28467.                  int download_limit[4]; 
  28468.                  int file_ratio[4]; 
  28469.                  int byte_ratio[4]; 
  28470.                  int time_give_back_ratio[4]; 
  28471.                  int byte_give_back_ratio[4]; 
  28472.                  unsigned flags; 
  28473.                                 /* 0x0001 = allow Passworded uploads 
  28474.                                    0x0002 = allow attach messages 
  28475.                                    0x0004 = allow KILL/Password   
  28476.                                             uploads 
  28477.                                 */ 
  28478.          };
  28479.  
  28480.  
  28481.  
  28482.  
  28483.  
  28484.  
  28485.  
  28486.  
  28487.  
  28488.  
  28489.  
  28490.  
  28491.  
  28492.  
  28493.  
  28494.  
  28495.  
  28496.  
  28497.  
  28498.  
  28499.  
  28500.  
  28501.  
  28502.  
  28503.  
  28504.  
  28505.  
  28506.  
  28507.          Osiris SE         Technical Reference Manual        Page 497
  28508.  
  28509.          Struct _User_record { 
  28510.                    char name[36]; 
  28511.                    char city[26]; 
  28512.                    char pwd[16]; 
  28513.                    char homephone[13]; 
  28514.                    unsigned original_log_on_date;  /*  packed date   
  28515.                                                        field */ 
  28516.                    unsigned last_date_online; /* packed date field */ 
  28517.                    unsigned total_calls; 
  28518.                    unsigned char node_restrictor; 
  28519.                    unsigned char allow_nodelist_display; 
  28520.                    unsigned msg_areas[50]; /* areas selected */ 
  28521.                    unsigned high_msg_area; /* highest  area   
  28522.                                                used */ 
  28523.                    unsigned highmsg[50];  /*  high  read  in   those   
  28524.                                               areas.*/ 
  28525.                    char alias[36]; 
  28526.                    char mailer_serial_number[51]; 
  28527.                    long ups; /* total Kbytes uploaded */ 
  28528.                               
  28529.                    long downs; /* total kbytes downloaded */ 
  28530.                    char screen_clear_type; /* 1 = ANSI 
  28531.                                            2 = FORM FEED 
  28532.                                            3 = CR/LF */ 
  28533.                               
  28534.                    int protocol; /* callers default protocol */ 
  28535.                               
  28536.                    unsigned last_matrix_read; /* Highest  file  slot   
  28537.                                                  used*/ 
  28538.                    int board; /*** Last Msg board accessed ***/ 
  28539.                    int fboard; /*** last File area access ***/ 
  28540.                    unsigned  day; /*** birth day ***/ 
  28541.                    unsigned  month; /*** birth month ***/ 
  28542.                    unsigned  total_downloaded_files; 
  28543.                               /* NUMBER of files downloaded */ 
  28544.                    unsigned  total_uploaded_files; 
  28545.                               /* NUMBER of files Uploaded */ 
  28546.                    int  today; /*** downloads today...***/ 
  28547.                    int elapsed;    /*** total time online   
  28548.                                     today..minutes...***/ 
  28549.                    int  matrix_credit; 
  28550.                    int  times_posted; 
  28551.                    unsigned  menu_flags; /* special access  flags  for   
  28552.                                              command keys*/ 
  28553.                    unsigned last_time_online; /* packed time field */ 
  28554.                    unsigned access_level; 
  28555.                    unsigned unused1; 
  28556.                    unsigned unused2;
  28557.  
  28558.  
  28559.  
  28560.  
  28561.  
  28562.          Osiris SE         Technical Reference Manual        Page 498
  28563.  
  28564.  
  28565.                    unsigned user_settings_flags; 
  28566.                        
  28567.             /* Special user_settings flags 
  28568.             0000 0000 0000 000X  Ansi 0x0001 
  28569.             0000 0000 0000 00X0  More On or OFF 0x0002 
  28570.             0000 0000 0000 0X00  Screen Clear 0x0004 
  28571.             0000 0000 0000 X000  [hotkeys] 0x0008 
  28572.             0000 0000 000X 0000  Full Menu display 0x0010 
  28573.             0000 0000 00X0 0000  No Menus..short display  0x0020 
  28574.             0000 0000 0X00 0000  No nothing, only SELECT: 0x0040 
  28575.             0000 0000 X000 0000  Auto mail check at log on 0x0080 
  28576.            */
  28577.  
  28578.                    int  use_ibm; /*** use IBM Graphic's *****/ 
  28579.                    int  len; /***** Screen Length *****/ 
  28580.                    char unused3; /** resevered for system. **/ 
  28581.                    char osage_editor; 
  28582.                    unsigned year; /* birth year */ 
  28583.                    unsigned   new_upload_search_date;/*  packed   date   
  28584.                                                          field */ 
  28585.                    unsigned download_prompt; /* 0 = off 
  28586.                                                 1 = on */ 
  28587.                    unsigned rotate_password; /* 0 = 0ff 
  28588.                                                 other number is number   
  28589.                                                 of    log-on's     the   
  28590.                                                 password is good for */ 
  28591.                    unsigned gflag; /* generally purpose SPL/I flags */ 
  28592.           };
  28593.  
  28594.          NOTE:  User.idx, Alias.idx are properatory indexing  systems.   
  28595.          Do not alter name field or alias field in user records.
  28596.  
  28597.          Struct _Mainpriv{ 
  28598.               char command_key[26]; 
  28599.               int access_level[26]; 
  28600.               unsigned flags[26]; 
  28601.           };
  28602.  
  28603.          Struct _Lastcaller { 
  28604.                 char lastcaller[36]; 
  28605.                 char from[36]; 
  28606.          };
  28607.  
  28608.  
  28609.  
  28610.  
  28611.  
  28612.  
  28613.  
  28614.  
  28615.  
  28616.  
  28617.          Osiris SE         Technical Reference Manual        Page 499
  28618.  
  28619.          Struct _Filboard 
  28620.             { 
  28621.              char command_key[20];/* command keys */ 
  28622.              char name[31]; /* area name */ 
  28623.              char  downpath[80]; /* path to physical dnloadable  files   
  28624.                                    in area*/ 
  28625.              char down[80];/* path to files qbs for download area */ 
  28626.              char uppath[80]; /* path to upload area */ 
  28627.              unsigned access_level; /* area access level */ 
  28628.              unsigned  access_levels[20];/* access levels for  command   
  28629.                                              keys*/ 
  28630.              unsigned access_flags[20]; /* flags for command keys */ 
  28631.              unsigned flag; /* area access flags */ 
  28632.              char menu[9]; /* full help menu for area */ 
  28633.              char  dl_files[8]; /* name of download  files.qbs,  minus   
  28634.                                    extension */ 
  28635.              char  up_files[8];  /* name of  upload  files.qbs,  minus   
  28636.                                     extension */ 
  28637.              char  bypass_limits;   /* don't count downloads  on  user   
  28638.                                        record.
  28639.  
  28640.                                          0 = count them. 
  28641.                                          1 = do not count them 
  28642.                                          */ 
  28643.              unsigned int app_flags; 
  28644.              char unused2[7]; 
  28645.          };
  28646.                                     Programmers Notes
  28647.  
  28648.                    The  field  app_flags  consists of  16  bit  flags.  
  28649.                    External applications may use any one of the flags,  
  28650.                    except  bit  flag 0, to indicate yes/no  or  on/off  
  28651.                    switches  for their applications. Before using  one  
  28652.                    of  these  flags,  contact David  Adams  using  our  
  28653.                    technical  support voice number to ensure that  the  
  28654.                    flag is not being used by another application.
  28655.  
  28656.  
  28657.  
  28658.  
  28659.  
  28660.  
  28661.  
  28662.  
  28663.  
  28664.  
  28665.  
  28666.  
  28667.  
  28668.  
  28669.  
  28670.  
  28671.  
  28672.          Osiris SE         Technical Reference Manual        Page 500
  28673.  
  28674.  
  28675.               Struct  _Msgboard  {   
  28676.  
  28677.               char command_key[20]; /* holds actual command key  ascII   
  28678.                                        value  */  
  28679.               unsigned  access[20]; /*  access  levels  for Command_key */ 
  28680.               unsigned  access_flags[20]; /* flags for command_key */ 
  28681.               char name[31]; /* area name */ int type; /* area type */  
  28682.               int msg_type; /* message type */ 
  28683.               int access_level; /* area access level */ 
  28684.               unsigned flag; /* area access flags */ 
  28685.               char origin[66]; /* optional origin line */ 
  28686.               char menu[9]; /* name of menu minus extension */ 
  28687.               char word_wrap; /* wordwrap on/off (1 = on, 0 = off)  */  
  28688.               int  upper_limit; /* maximum pre pack message  level  */  
  28689.               int lower_limit; /* post pack message level */ 
  28690.               } ;
  28691.  
  28692.          Struct _Filesbbs 
  28693.            { 
  28694.             char name[13]; 
  28695.             unsigned upload_date; /* packed date field */ 
  28696.             char  description[81]; /* NOTE: Description must end  with   
  28697.                                      ascii 10 and ascii 13 */ 
  28698.             char upname[36]; /**** Person who uploaded the file ****/ 
  28699.             unsigned  times;  /**** Number of times  that  files  been   
  28700.                                    downloaded ****/ 
  28701.             unsigned  dl_date;  /**** The last date that  program  was   
  28702.                                        downloaded ****/ 
  28703.          };
  28704.  
  28705.          Struct Protocol_rec{ 
  28706.                  char            display_name[9]; 
  28707.                  char            program_name[9]; 
  28708.                  char            send_cmd[61]; 
  28709.                  char            rcv_cmd[61]; 
  28710.                  long            low_cps; 
  28711.                  long            high_cps; 
  28712.                  long            times_used; 
  28713.                  int             is_batch; /* 0 = No 
  28714.                                               1 = Yes 
  28715.                                               */ 
  28716.                  unsigned        access_level; 
  28717.          };
  28718.  
  28719.  
  28720.  
  28721.  
  28722.  
  28723.  
  28724.  
  28725.  
  28726.  
  28727.          Osiris SE         Technical Reference Manual        Page 501
  28728.  
  28729.          Struct _Msg_center_msg /* HDRP.SYS Header */ 
  28730.             { 
  28731.               char from[36]; 
  28732.               char to[36]; 
  28733.               char subj[41]; 
  28734.               unsigned date_posted; /* packed date field */ 
  28735.               unsigned time_posted; /* packed time field */ 
  28736.               unsigned date_received; /* packed date field */ 
  28737.               unsigned time_received; /* packed time field */ 
  28738.               unsigned attr; /* 0x0001 - Return Recite Requested */ 
  28739.                              /* 0x0002 - file attached */ 
  28740.               long offset; /* offset in TXTP.SYS */ 
  28741.               long bytes; /* No. bytes in Message */ 
  28742.               char fname[13]; /* name of attached file */ 
  28743.               int uplink; /* up link to next message in  conversation   
  28744.                           */ 
  28745.               int dnlink;/* down  link  to  prior   message   in   
  28746.                             conversation */ 
  28747.           };
  28748.  
  28749.          Struct _History_log 
  28750.           { 
  28751.          unsigned date; /* packed date field */
  28752.  
  28753.          char   name[36], 
  28754.                 city[26];
  28755.  
  28756.          int   starting_hour, 
  28757.                starting_min, 
  28758.                ending_hour, 
  28759.                ending_min, 
  28760.                total_time; /* time online in minutes */
  28761.  
  28762.           };
  28763.  
  28764.  
  28765.                                  Packed Time Fields
  28766.  
  28767.               A  time field is packed using the same method  DOS  uses   
  28768.               for file dates.
  28769.  
  28770.                                  Packed Date Fields
  28771.  
  28772.                                   Packing A Date Field
  28773.  
  28774.                    int  year,month,day;
  28775.                    <Get year,month, and day>
  28776.                    if(year > 1980) year -= 1980; 
  28777.                    else 
  28778.                     if(year > 80) 
  28779.                          year -= 80; 
  28780.                    pack_field = (year << 10) +(month << 5) + day;
  28781.  
  28782.          Osiris SE         Technical Reference Manual        Page 502
  28783.  
  28784.                                  Unpacking A Date Field
  28785.  
  28786.                    day = packed_date << 11 >> 11; 
  28787.                    month = packed_date << 6 >> 11; 
  28788.                    year = (packed_date >> 10) + 80;
  28789.  
  28790.  
  28791.                                      Outxx.qbs
  28792.  
  28793.               Outxx.Qbs is the external control file written by Osiris   
  28794.               when a caller does a VMS SHELL. 
  28795.   
  28796.               xx  is the NODE number and should NOT be  confused  with   
  28797.               the COM port being used. 
  28798.   
  28799.               Filename for Node 1 - Out1.Qbs  
  28800.               Filename for Node 2 - Out2.Qbs 
  28801.   
  28802.               External  applications  can  ALWAYS  find  the  External   
  28803.               Control   file   by  using  the   environment   variable   
  28804.               OSIRIS=Drive:\path 
  28805.   
  28806.               The OUTxx.QBS will always be written in this directory.
  28807.  
  28808.               e.g. OSIRIS=C:\Osiris 
  28809.   
  28810.               OUTxx.Qbs is in the directory C:\Osiris
  28811.  
  28812.          Struct _Outctl /* outXX.qbs file */  
  28813.            {  
  28814.              char name[36]; /* callers name */  
  28815.              int internal_field1; /* Internal Osiris Use ONLY */  
  28816.              int elapsed; /* minutes ALREADY online TODAY */  
  28817.              int cur_baud; /* baud rate: 1200, 2400, 9600 */  
  28818.              int port; /* com port: 0, 1, 2, etc.. */  
  28819.              long timeleft; /* Time left for call in TIC's */  
  28820.              long logon_time; /* Log on time in TIC's */  
  28821.              int minutes; /* Minutes left for call */  
  28822.              int ansi; /* ANSI supported */  
  28823.              int local; /* 1 if in local mode */  
  28824.              int internal_field2; /* internal Osiris Use Only */  
  28825.              char sysop_name[36];  
  28826.              char board_name[40];  
  28827.              int node; /* Node number, 1 - 256 */  
  28828.              int ibm;/* Supports IBM Character Set 1 = Yes, 0 = No */  
  28829.              int user_id;/* User's Record Number */  
  28830.              int osage;/* Supports Osage ANSI Editor */  
  28831.              char phone[15]; /* Callers Phone Number */  
  28832.              char pwd[16]; /* Callers Password */  
  28833.              unsigned access_level; /* Callers Access Level 1-32722 */  
  28834.              int internal_field3; /* Osiris Internal Use Only */  
  28835.            };
  28836.  
  28837.          Osiris SE         Technical Reference Manual        Page 503
  28838.  
  28839.                                    Programming  Notes  
  28840.  
  28841.                    All  String Fields are C NULL terminating  strings.   
  28842.                    Their MAY be resident garbage behind the NULL. That   
  28843.                    garbage should be ignored. 
  28844.  
  28845.                    Node  Number does NOT reference the COM port  being   
  28846.                    used.  Node 1 can be on COM port 2, 3, 4,  5,  etc.   
  28847.                    COM  port  being  used should be  pulled  from  the    
  28848.                    "port" variable. 
  28849.   
  28850.                    Baud  rate reflects the CONNECT rate, and  may  NOT   
  28851.                    always reference the serial rate, especially if the   
  28852.                    system  is  running a highspeed modem locked  at  a   
  28853.                    specific baud rate. 
  28854.   
  28855.                    Programmers   SHOULD  check  for   an   environment  
  28856.                    variable  COMx=BAUD_RATE  with  x  being  the   COM   
  28857.                    port    in   question.   This will  always,  if  it  
  28858.                    exists,   reflect  the serial port baud rate,  most  
  28859.                    generally locked at  a high baud rate.
  28860.   
  28861.                    e.g. COM2=19200 
  28862.   
  28863.                    Indicates that COM port 2 is set to 19200 baud. 
  28864.   
  28865.                    e.g. COM1=9600 
  28866.   
  28867.                    Indicates that COM port 1 is set to 9600 baud. 
  28868.   
  28869.                    Since Osiris Supports Ultra high Lock rates, up  to   
  28870.                    115,200  baud,  a LONG integer should  be  used  to   
  28871.                    store the setting. 
  28872.   
  28873.                    If programming in C : long serial_rate;  
  28874.                    serial_rate = (long) atol(env_string);
  28875.  
  28876.                    Programmers  should  take care NOT  to  change  ANY   
  28877.                    field  within  the  OUTxx.QBS.
  28878.